比较iOS时区规则

时间:2013-08-12 03:06:25

标签: ios cocoa-touch nstimezone

如果用户在东部时间,我不想显示“EST”或“EDT”,但如果不是,我想显示它。

有没有比较简单的方法来比较iOS中的TimeZone规则?

[NSTimeZone localTimeZone]返回美洲/印第安纳波利斯,但我只是想知道它是否是东部。

比较数据不起作用,我只是比较secondsFromGMT

修改 比较偏移似乎有效,但我不知道它是否会在以后引起问题?

2 个答案:

答案 0 :(得分:1)

您可以使用[[NSTimeZone localTimeZone] abbreviation];来获取用户所在时区的缩写。

这给出了当前日期的缩写(如果不是夏令时则为EDT,如果是夏令时则为EST,在您的情况下)。如果您想要特定日期的缩写,可以使用abbreviationForDate:并插入任何日期。

Here is some more information about NSTimeZone

编辑:

如果您想要实际比较多个时区(例如,检查它是否是当前时区),您可以使用isEqualToTimeZone:。如果这不符合您的需求,请查看该链接中的其他一些NSTimeZone方法。

答案 1 :(得分:0)

我在工具应用中处理时区问题时遇到了很多麻烦,其中包括跨时区的事件安排。时区名称使用起来并不友好。此外,夏令时是一个巨大的痛苦。

对我来说一直有效的是使用timeZoneForSecondsFromGMT

这样的调用

我还将存储的日期转换为GMT,然后我可以将它们设置为显示的当地时间。

NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger timeZoneOffset = [zone secondsFromGMT];


[self.dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:timeZoneOffset]];