我正在创建一个 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
最佳答案
last 2013-12-30 23:00:00 +0000
这是因为您显示的时间为格林威治标准时间 - 即伦敦时间。但你不在伦敦。我不知道你在哪里,但如果你仔细想想,你会发现伦敦 30 日 2300 时,你所在的地方是 31 日午夜,这正是你所要求的。
关于ios - NSDateComponents 中的错误日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765433/