如果用户在东部时间,我不想显示“EST”或“EDT”,但如果不是,我想显示它。
有没有比较简单的方法来比较iOS中的TimeZone规则?
[NSTimeZone localTimeZone]
返回美洲/印第安纳波利斯,但我只是想知道它是否是东部。
比较数据不起作用,我只是比较secondsFromGMT
?
修改 比较偏移似乎有效,但我不知道它是否会在以后引起问题?
答案 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]];