NSDate 具有相反的 AM/PM 值

NSDate has the opposite AM/PM value

我正在使用此代码将 NSDate 转换为我的本地时区,显示了正确的小时和日期,但 AM/PM 部分始终不正确。

let date1 = "2015-05-14 19:00:00 +0000"
let date2 = "2015-06-12 04:50:00 +0000"
var dateFormatter = NSDateFormatter()

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzzz"
let date = dateFormatter.dateFromString(date1)

let timeZone = NSTimeZone.localTimeZone()

let seconds: NSInteger = timeZone.secondsFromGMTForDate(date!)
var d = NSDate(timeInterval: NSTimeInterval(seconds), sinceDate: date!)

date1 返回 May 14, 2015, 7:AM

date2 返回 Jun 11, 2015, 4:50PM

这两个应该有相反的 AM/PM 值,谁能告诉我我做错了什么?

(来自我上面的评论) NSDate 没有时区。 date1/date2 是 字符串 指定 GMT 时间。如果您想在本地时区打印 date,请使用日期格式化程序将其转换为字符串。

如果您的意图是 解释 date1/date2 就好像它们是在您当地的时区而不是格林威治标准时间,那么您的更正方向是错误的(替换 seconds -seconds).

你的结果不是 具有相反的 AM/PM 值,但只比您预期的早 12 小时 他们是(这是有道理的,因为山地时间是 GMT-06)。