我计算两个日期之间的天数:
NSDateComponents *datesDiff = [calendar components: NSDayCalendarUnit
fromDate: someDate
toDate: currentDate
options: 0];但是这种方法有一个缺点--它没有考虑时区。例如,如果我在+2格林尼治时间,当地时间是凌晨1:00,目前的日期是昨天。
如何比较指定时区中的日期(没有“黑客”)?
PS:用时间差的计算来阻止答案,我需要实际天数的差异:
yesterday 23:00与today 1:00 - 1 dayyesterday 1:00与today 23:00 - 1 daytoday 1:00与today 23:00 - 0 days发布于 2012-09-11 05:46:36
我不知道它是否满足了您不讨厌的标准,但一个相当简单的方法似乎是定义GMT调整的日期,如下所示:
NSDate *newDate = [oldDate dateByAddingTimeInterval:(-[[NSTimeZone localTimeZone] secondsFromGMT])有关更多详细信息,请参阅this question。
发布于 2012-09-10 20:34:32
为什么不将日期格式化程序配置为默认GMT时间的所有日期,然后进行比较。
NSDate *now = [NSDate date];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; // Sets to GMT time.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setCalendar:gregorianCalendar];
[formatter setTimeZone:timeZone];
[formatter setDateFormat:@"yyyyMMddHH"];
NSString *dateString = [formatter stringFromDate:now];
// do whatever with the dates
[gregorianCalendar release];
[formatter release];https://stackoverflow.com/questions/12232160
复制相似问题