2010-12-15 119 views
4

我有一个查询从C#调用Oracle数据库。我想编写查询来获取最多5年的数据。日期范围天数.... C#

我现在有public const int FIVE_YEARS_IN_DAYS = 1825;

一个硬编码值,但是,这是因为闰年的不正确。有没有一个函数可以给我前5年的正确天数?

+0

为什么不每年使用365.25天? – PostMan 2010-12-15 19:59:26

+1

@PostMan - 这并不总是准确的。我们每4年没有闰年。处理时间是编程中的一个领域,它使用经过硬化和测试的解决方案要好得多。被咬伤很容易。 – 2010-12-15 20:05:23

+0

@所有....感谢您的输入。非常有帮助 – MikeTWebb 2010-12-15 20:47:15

回答

6

我想你想要这样的:

DateTime now = DateTime.Now;  
now.AddYears(-5).Subtract(now).Days 
+3

为了捕捉在午夜左右执行此计算的可能性不大的事件,您可以考虑首先捕获DateTime.Now,然后使用捕获的值执行计算。 – wageoghe 2010-12-15 20:06:22

+0

我希望只是把@Matt Greer放在正确的道路上,但是很好。 – 2010-12-15 20:25:41

+3

我会认为'DateTime.Today'会比'DateTime.Now'更好的选择。 – Powerlord 2010-12-15 20:37:20

4
DateTime now = DateTime.Now; 
TimeSpan fiveYears = now.Subtract(now.AddYears(-5)); 
int numberOfDaysInLastFiveYears = fiveYears.Days; 

这将正确地解释闰年。现在这样做产生1,826天。

+0

与我对@Bakak Naffas的回答相同的评论。可能更安全地捕获DateTime.Now并使用捕获的值执行计算。 – wageoghe 2010-12-15 20:10:47

+0

是的,这是正确的。通常捕获'DateTime.Now'是一种很好的做法。 – 2010-12-15 20:12:08