iOS NSDateFormatter 忽略时区

iOS NSDateFormatter ignoring timezone

我目前正在通过 json 从 Postgresql 数据库中提取 date/times 并将日期转换为 NSDate。我最初将日期保存在太平洋标准时间 1 月 15 日中午 12 点。有人可以看到我在以下过程中哪里出错了吗?似乎在 iOS 方面忽略了时间戳

最初 PostgreSql 中的日期如下所示:

2015-01-16 20:00:10+00

JSON 中的日期如下所示:

"start_time" = "2015-01-16T20:00:10.000Z";

当我使用以下方法转换此日期时:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z"];

我明白了

  2015-01-17 04:00:10 +0000

其中还读到:

  "start_time" = "2015-01-16 20:00:10 PST in the debugger

问题是您引用了时区格式说明符。你想要:

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];

请注意 Z.

前缺少引号