NSDateFormatter解析时区
问题描述:
我想解析不包含时区的日期字符串。日期字符串将始终以GMT格式。当我构建一个新的NSDateFormatter
时,结果比格林威治标准时间早3小时,当我将日期格式化程序中的timeZone
设置为GMT时,它会在3小时后显示出来。我究竟做错了什么?NSDateFormatter解析时区
这里有一个快速操场演示问题:
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小时制)。在操场上验证。
这里有一个有趣的factoid:如果你更改为'formatter.dateFormat =“M/d/yyyy H:mm:ss”'并输入'“2/8/2016 15:43:32”'你会得到正确的时间... – sschale