NSDate具有相反的AM / PM值

时间:2015-05-13 06:35:41

标签: ios swift nsdate

我使用此代码将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值,任何人都可以告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

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

如果您打算解释 date1 / date2,就好像它们在您当地的时区而不是GMT那样,那么您的更正就会走错方向(将seconds替换为{{1 }})。

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