self.tzID设置为PST
NSTimeZone *timeZone = NSTimeZone localTimeZone;self.tzID = timeZone缩写;America/Los_Angeles获得:
NSDictionary *tzDict = NSTimeZone abbreviationDictionary;NSString *tzName = tzDict objectForKey:self.tzID;问题是,当他是印度的时候,tzID被设置为GMT-8,而tzDict没有任何GMT-8来制造tzName nil。
发布于 2016-12-14 18:37:25
你应该小心使用缩略语在字典中查找名字。问题是缩略语含糊不清(相同的缩写在不同的地方有不同的含义)。更糟糕的是,您不能仅仅查找GMT-8是什么,因为目前有七个GMT-8,所以您无法知道用户的意图。
因此,您真的不应该在查找时使用缩写。使用timeZone.name (或者,在Swift 3中使用timeZone.identifier),而不是使用abbreviation。
发布于 2016-12-14 18:28:14
获取时区名称的方法是询问时区的本地化名称。例如:
NSString *name = [timeZone localizedName:NSTimeZoneNameStyleGeneric locale:nil];这将返回时区的正确本地化名称。根据您的需要,您可以使用不同的样式,包括“标准”和“短标准”,“夏令节约”等。
如果您需要区分标准和DST,请使用isDaylightSavingTimeForDate:来确定使用哪一个。
https://stackoverflow.com/questions/41148593
复制相似问题