3

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

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

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

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

编辑 比较偏移量似乎确实有效,但我不知道它是否会在以后引起问题?

4

2 回答 2

1

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

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

这是有关 NSTimeZone 的更多信息

编辑:

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

于 2013-08-12T03:20:27.133 回答
0

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

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

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

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


[self.dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:timeZoneOffset]];
于 2013-08-12T05:56:04.557 回答