所以当使用NSCalendar和NSDateComponents从NSDate对象中提取日期组件时,我遇到了一个奇怪的行为。 如果日期从1970年起为0秒,那么本周的组件将返回53. 对于这种解决方法还是解决办法而不是明显的模数52方法?NSDateComponents在1970年1月1日返回第53周
这里是你可以在你的机器上运行测试代码:
-
(void)testDate {
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:0];
NSDateComponents *comp = [cal components:(NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit | NSWeekCalendarUnit) fromDate:date];
DLog(@"%d/%d/%d week: %d", [comp day],[comp month], [comp year], [comp week]);
}
这里是输出:
31/12/1969 week: 53
(gdb) po date
1970-01-01 00:00:00 +0000
(gdb)
我必须说我不确定为什么1969会有一个闰周。另一方面,它印刷31/12/1969的原因是因为你处于时区。 – Joe
我没有添加任何时区计算上面的代码正是没有运行调试器,奇怪的是,组件返回一天和一周点1969年的相对一周 –
那么如何处理飞跃那么每周/年? –