我有以下代码通过使用日期中的 YEAR、MONTH 和 DAY 组件来将日期的时间设置为 0 小时、0 分钟和 0 秒,以构造一个新的:
NSDate *date = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];
NSDate *newDate = [gregorian dateFromComponents:comps];
NSLog(@"date: %@, newDate: %@", date, newDate);
输出是:
date: 2012-11-06 11:44:09 +0000, newDate: 2012-11-05 23:00:00 +0000
但我期待新的日期是:2012-11-06 00:00:00 +0000
我应该知道发生了什么?