系统开发中,经常用了日期的一系列操作。在系统中用到了获取下一月的1号,开始写的代码如下:
DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.Day+1).AddHours(-DateTime.Now.Hour+1).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second)
很多人都不会觉得有问题,但是今天确实报错了,今天是2014/03/31
结果 这个值还是2014/03/31,分析了一下原因,3月有31天,但是4月却只有30天,这个导致了现在的结果。
根据这个调整了一下代码:
DateTime.Now.AddDays(1-DateTime.Now.Day).AddMonths(1).AddHours(-DateTime.Now.Hour+1).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second)
这是一些细节上的问题。经过严格的测试也没有测出这个问题,谁能想到在3/31这天会报错呢?
希望给大家一个提醒!