NSDateFormatter 解析时区

NSDateFormatter parsing timezone

我正在尝试解析不包含时区的日期字符串。日期字符串将始终使用 GMT。当我构造一个新的 NSDateFormatter 时,结果比格林威治标准时间提前 3 小时,而当我将日期格式化程序上的 timeZone 设置为格林威治标准时间时,它会比格林威治标准时间晚 3 小时。我做错了什么?

这里有一个演示问题的快速游乐场:

import Foundation
let formatter = NSDateFormatter()
formatter.dateFormat = "M/d/yyyy H:mm:ss a"
let date1 = formatter.dateFromString("2/8/2016 3:43:32 PM")!
formatter.timeZone = NSTimeZone(name: "GMT")!
let date2 = formatter.dateFromString("2/8/2016 3:43:32 PM")!
print("Expect: 2016-02-08 15:43:32 +0000")
print("Got:    \(date1)")
print("        \(date2)")

输出:

Expect: 2016-02-08 15:43:32 +0000
Got:    2016-02-08 18:43:32 +0000
        2016-02-08 12:43:32 +0000

更改 "M/d/yyyy H:mm:ss a" -> "M/d/yyyy h:mm:ss a"。小时不应大写(大写的 H 表示 24 小时制)。在操场上验证。