0
我一直使用NSCalendar和NSDateComponents来返回两个日期之间的差异(天)。这是我用来获取该代码的代码。iOS - TimeZone问题与2个NSDates之间的差异
NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
NSDate *todayDate = [NSDate date];
NSDateComponents *comps = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
fromDate:todayDate];
[comps setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *today = [calendar dateFromComponents:comps];
NSDate *startDate = self.date;
NSDate *endDate = today;
NSLog(@"startDate: %@",startDate);
NSLog(@"endDate: %@",endDate);
NSDateComponents *components = [calendar components:NSDayCalendarUnit
fromDate:endDate
toDate:startDate
options:0];
[components setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSInteger days = [components day];
怪异的是,这一天期间的早期部分作品完美,但一旦我达到约6或晚上7点(我使用山区标准时间,也就是北京时间我认为),它停止正常工作。它不是返回正确的差值,而是返回差值减1天。所以例如,它返回-1而不是0或1而不是2.
我猜这是一个时区问题。有谁知道如何修理它?我已经尝试将我的NSCalendar和NSDateComponents的时区设置为GMT,本地和系统,但似乎没有任何工作。
任何想法?
谢谢!
你需要在*之前用'[日历组件...]'来使用时区*。 – 2012-07-26 01:31:20