为什么从UTC转换为BST时日期末尾会有“ Z”?

时间:2019-11-20 13:02:07

标签: ios timezone nsdateformatter

试图使用日期格式从UTC转换为BST(英国夏令时)。但这在日期的结尾给了我“ Z”。它适用于从UTS到IST的对话。下面是我的代码。

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[NSLocale currentLocale]];
    [dateFormatter setDateFormat:@"dd'-'MM'-'yyyy HH':'mm':'ss ZZZZZ"];
    NSMutableString *dateString = [NSMutableString stringWithFormat:@"%@", [dateFormatter stringFromDate:[NSDate date]]];
    NSLog(@"%@",dateString); // This prints 20-11-2019 12:49:02 Z

谁能知道为什么会这样。代码有问题还是需要更改?

1 个答案:

答案 0 :(得分:1)

以日期格式ZZZZZ替换为xxxxx。除非用户处于GMT时区,否则使用ZZZZZ会得到-99:99,在这种情况下,用户只会给出Z。无论用户的时区如何,xxxxx都会给出-99:99

您可以在Unicode specification中查看特定的详细信息。

对于ZZZZZ,它指出:

  

-08:00
  -07:52:58
  具有小时,分钟和可选秒字段的ISO8601扩展格式。当本地时间偏移为0时,将使用ISO8601 UTC指示器“ Z”。这等效于“ XXXXX”说明符。

对于XXXXX,它指出:

  

-08:00
  -07:52:58
  Z
  具有小时,分钟和可选秒字段的ISO8601扩展格式。当本地时间偏移为0时,将使用ISO8601 UTC指示器“ Z”。(与xxxxx相同,外加“ Z”。)

对于xxxxx,它指出:

  

-08:00
  -07:52:58
  具有小时,分钟和可选秒字段的ISO8601扩展格式。 (与XXXXX相同,减去“ Z”。)