Objective-C NSDate - 如何从不同时区获取当前日期

时间:2010-08-05 09:09:07

标签: objective-c

我一直在浏览Apple文档一段时间,但还没有看到从不同时区获取当前日期的方法。基本上,我需要在美国中央标准时间(CST)获取当前日期。通过设置时区,我很确定它是NSDate和NSDateFormatter的组合。我确信这是一项简单的任务,但我无法找到最佳方法。

这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:3)

如果您只想显示给定区域的当前时间,则需要设置NSDateFormatter的timeZone属性:

[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];

如果您想要一个包含给定区域时间的NSDate对象,则需要在检索该日期之前设置默认时区:

NSDate* date = [NSDate date];
NSLog(@"%@", [date description]);

[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSDate* nDate = [NSDate date];
NSLog(@"%@", [nDate description]);

//output
2010-08-05 12:32:38 +0300
2010-08-05 04:32:38 -0500