日期范围天数 ....C#

4

我有一个从C#调用Oracle数据库的查询。我想编写查询以获取最多5年前的数据。

当前我有一个硬编码值public const int FIVE_YEARS_IN_DAYS = 1825;

但是,由于闰年的存在,这是不正确的。是否有一个函数可以给我前5年中正确的天数?


为什么不使用每年365.25天? - PostMan
1
@PostMan - 那并不总是准确的。我们并不是每4年就有一个闰年。处理时间是编程中一个更好使用经过强化、测试的解决方案的领域。很容易被咬伤。 - Matt Greer
@所有人....感谢你们的意见。非常有帮助。 - MikeTWebb
2个回答

6
我想您需要这个:
DateTime now = DateTime.Now;    
now.AddYears(-5).Subtract( now ).Days

3
为了捕捉到可能在午夜左右执行此计算的情况,你可以先捕获DateTime.Now,然后使用捕获的值进行计算。请注意不要改变原意,使翻译通俗易懂,不提供解释或其他非翻译内容。 - wageoghe
我希望只是给Matt Greer指出正确的方向,但你说得很好。 - Babak Naffas
3
我认为DateTime.TodayDateTime.Now更合适。 - Powerlord
DateTime.Today 仍然会有 DateTime.Now 存在的午夜边界问题。 - Matt Greer

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

这将正确地考虑闰年。现在做到这一点需要1,826天。


和我对@Babak Naffas答案的评论一样。最好捕获DateTime.Now并使用捕获的值执行计算,这样更安全。 - wageoghe
是的,没错。通常捕获 DateTime.Now 是一个好习惯。 - Matt Greer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接