我正在开发一个asp.net项目,我需要找到与去年相当的当日日期?。
假设当前年份日期是“02/26/2015”,那么去年的日期将是“02/27/2015”。
如果我们编写此代码
,它工作正常return cyDate.AddYears(-1).AddDays(1);
但如果这一年是闰年,它就无法正常运作。所以我通过使用以下代码
来解决这个问题 if (DateTime.IsLeapYear(cyDate.Year) && ((cyDate.Month > 2) || ((cyDate.Month == 2) && cyDate.Day >= 29 )))
{
return cyDate.AddYears(-1).AddDays(2);
}
else
{
return cyDate.AddYears(-1).AddDays(1);
}
还有其他合适的方法吗?我搜索过,但没有找到任何正确的答案。请帮帮我。
答案 0 :(得分:1)
DayOfYear是今年#天的DateTime概念,因此它是1到366之间的整数值。
我想你可能想要使用这个概念。
当然,由于我不明白为什么你会想要这些数据,我有点不确定最好的方法。
如果你真的想要365天前的一天,那就去做吧。
DateTime oneYearAgo = DateTime.Now.AddDays(-365)
如果你真的想要今天的日期,但去年再加上一天,那就去做吧。
DateTime oneYearAgo = DateTime.Now.AddYears(-1).AddDays(1)
为什么你认为你的逻辑应该根据闰年而不是闰年来改变?我强烈建议你仔细检查你的要求,如果它们像你建议的那样复杂,那么编写一个稍微复杂的例程来计算那个日期并没有错。