我使用此代码将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值,任何人都可以告诉我我做错了什么吗?
答案 0 :(得分:1)
(来自我的上述评论) NSDate
没有时区。 date1 / date2是 strings ,用于指定GMT中的时间。如果要在本地时区打印date
,请使用日期格式化程序将其转换为字符串。
如果您打算解释 date1 / date2,就好像它们在您当地的时区而不是GMT那样,那么您的更正就会走错方向(将seconds
替换为{{1 }})。
你的结果不是 具有相反的AM / PM值但比预期提前12小时 他们是(这是有道理的,因为山区时间是GMT-06)。