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 小时制)。在操场上验证。
我正在尝试解析不包含时区的日期字符串。日期字符串将始终使用 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 小时制)。在操场上验证。