【问题标题】:Get timezone name from NSDate从 NSDate 获取时区名称
【发布时间】:2012-08-26 01:06:12
【问题描述】:

有什么方法可以从 NSDate 获取时区缩写(例如 UTC、EET)?我从字符串中获取 NSDate,例如 2012-08-26 02:54:50 +0200 并且需要显示该日期的时区。

目前正在这样做:

NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat: @"yyyy-MM-dd HH:mm:ssZZZ"];
NSDate *isoDate = [formatter dateFromString: isoTime.value];
NSInteger offset = [[NSTimeZone defaultTimeZone] secondsFromGMTForDate: isoDate];
NSTimeZone *timeZone = [NSTimeZone timeZoneForSecondsFromGMT: offset];

但我得到的是 GMT+03:00 时区缩写,但它应该是 EET。有什么办法吗?

【问题讨论】:

  • 这可能是不可能的,因为同一个偏移量可能对应多个时区名称。例如,COT(哥伦比亚时间)和EST(美国东部标准时间)都是 GMT-5。
  • 正如汤米所说,你无法得到不存在的东西。 NSDate 中没有时区数据。
  • (当然,您可以从要解析的日期字符串中单独提取时区。)

标签: iphone objective-c ios


【解决方案1】:

NSDate 与时区无关;它本身没有时区。因此,您无法从中获取时区。

secondsFromGMTForDate: 返回该时区在指定日期与 GMT 的偏移量(在您的情况下为默认值)。它返回有关 NSTimeZone 的信息,这可能取决于日期(例如,如果您的时区支持夏令时),而不是日期。

【讨论】:

    猜你喜欢
    • 2013-08-17
    • 2016-05-07
    • 1970-01-01
    • 2016-02-06
    • 2014-02-15
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多