使用NSDate对我来说很棘手。我知道它代表了一个特定的时间点,与特定的时区或地区无关。我还阅读了NSDateFormatter,NSCalendar,NSDateComponents,NSlocale和NSTimeZone上的文档。根据特定时区计算日期
我想根据两个特定的太平洋时区进行计算。例如,我希望能够计算从日期A到日期B的天数。我不想通过解析字符串来“破解”它,因为我希望计算DST之类的东西。
任何人都可以推荐一种方法来做到这一点?
编辑:找到解决方案:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"PST"];
[calendar setTimeZone:zone];
NSDateComponents *comp = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date];
date = [calendar dateFromComponents:comp];
[calendar release];
这导致局部太平洋时间日期。我知道这会导致不同语言环境的问题,但我的应用程序是独一无二的,这是合理的。
然后,我可以比较使用86400除以发布的日期。
尽管看起来像是过度杀伤 - 很多额外的工作 - 也许有一个更短的方式来获得与特定时区的日期?
NSDateComponents的问题是它需要输入日/月/年/ etc来设置它。如果我通过一个NSDate来创建它,它使用GMT。如果我可以在特定的时区使用当前实际时间获取NSDate对象,那就可以。但是当我用[NSDate date]实例化它只能解析为GMT。 – 2010-11-14 18:56:01
标记为最接近的正确。 – 2010-11-14 19:51:18