【问题标题】:UTC TimeZone in Europe gives year 2014 instead of 2013欧洲的 UTC 时区给出 2014 年而不是 2013 年
【发布时间】:2012-12-19 00:57:13
【问题描述】:

我使用“UTC”来设置时区。

如果“系统设置->常规->区域格式”在美国,则日期为 2013 年。 如果是在欧洲,日期是 2014 年。我正在使用下面的代码

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];

[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDate *dataTmp = [formatter dateFromString:[[[self.commManager.bolsaDic objectForKey:@"data"] objectAtIndex:0] objectForKey:@"TradeTimeUtc"]];

[formatter setDateFormat:@"dd-MM-YY HH:mm"];       
[formatter setTimeZone:[NSTimeZone systemTimeZone]];

有人遇到过这个问题吗?

【问题讨论】:

    标签: iphone ios timezone utc


    【解决方案1】:

    我认为这与您的日期格式中的“YY”有关。尝试将其更改为小写“yy”。 (不要问我为什么!)

    编辑:啊,显然大写 Y 会返回本周开始的年份,因此如果是 2014 年 1 月 1 日但星期三,则该周开始于 2013 年。

    【讨论】:

    • 不知道为什么不同地区会有所不同......也许一周的开始日期会有所不同
    【解决方案2】:

    永远不要在日期格式或解析中使用 YYYY。这是一个 ISO 年,它会搞砸它所涉及的任何事情。询问 Apple - 这就是导致 1 月 1 日 iOS 中出现 DND 错误的原因。

    始终使用 yyyy。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多