一个适用于从日、周、月到年末的起始和结束日期的本地化计算NSDate分类
Thompson定律:任何使用天真算术进行足够复杂日期计算的电影都有可能导致全球技术基础设施在2000年2月份崩溃的概率为非零。
如果您的代码定义了kSecondsInDay
、kSecondsInWeek
——或者更糟糕的是——kSecondsInMonth
(真的,你想设置多少?)... 您可能需要重新考虑。日期和时间系统非常复杂。在所有的时间区域、日历和其他特定于区域的信息中,您应该准备好为您提供正确的处理,你真的不能自己弄对。
感谢$DEITY
赋予NSCalendar
的力量,我只是想说。
无论如何,这个库专门使用NSCalendar
和NSDateComponents
进行日期计算,因此您将从闰年 到 闰月(真的,你要设置多少?)都处理得很好。
NSLog(@"Current Time: %@", date);
NSLog(@"Beginning of Day:%@", [date beginningOfDay]);
NSLog(@"End of Day:%@", [date endOfDay]);
NSLog(@"Beginning of Week:%@", [date beginningOfWeek]);
NSLog(@"End of Week:%@", [date endOfWeek]);
NSLog(@"Beginning of Month:%@", [date beginningOfMonth]);
NSLog(@"End of Month:%@", [date endOfMonth]);
NSLog(@"Beginning of Year:%@", [date beginningOfYear]);
NSLog(@"End of Year:%@", [date endOfYear]);
结果(注意时区和夏令时偏移量)
Current Time: 2013-10-19 13:29:26 +0000
Beginning of Day: 2013-10-18 22:00:00 +0000
End of Day: 2013-10-19 21:59:59 +0000
Beginning of Week: 2013-10-12 22:00:00 +0000
End of Week: 2013-10-19 21:59:59 +0000
Beginning of Month: 2013-09-30 22:00:00 +0000
End of Month: 2013-10-31 22:59:59 +0000
Beginning of Year: 2012-12-31 23:00:00 +0000
End of Year: 2013-12-31 22:59:59 +0000
Mattt Thompson
"在Scott Forstall的法庭上的Cupertino Yankee"可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。