我正在创建一个NSDate。为什么一天总是少一天?
这是代码:
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorian components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:today];
[comps setDay:31];
NSDate *lastDayOfMonth = [gregorian dateFromComponents:comps];
NSLog(@"last %@",lastDayOfMonth);这是日志:
last 2013-12-30 23:00:00 +0000结果是30而不是31
发布于 2013-12-24 18:56:48
last 2013-12-30 23:00:00 +0000这是因为你被展示为格林尼治时间--也就是伦敦的时间。但你不在伦敦。我不知道你在哪里,但如果你想一想,你就会意识到,当伦敦时间是30日23时,你所处的位置是31日午夜,这正是你所要求的。
发布于 2013-12-24 18:53:40
简而言之,对我来说,这似乎是一个时区或夏令时。
所有这些日历时间-计算可能非常混乱,所以一个一般性的建议:观察WWDC 2012和WWDC 2013关于日历计算(特别是2012年版本)。
https://stackoverflow.com/questions/20765433
复制相似问题