一个简单的代码,用于将字符串日期转换为NSDate。但不知道为什么它会返回实际日期 - 1
var start_date: NSDate?
var end_date: NSDate?
let dateformatter = NSDateFormatter()
dateformatter.dateFormat = "yyyy-MM-dd"
start_date = dateformatter.dateFromString("2016-09-01")!
end_date = dateformatter.dateFromString("2016-09-07")!
print(start_date)
print(end_date)
输出
2016-08-31 18:30:00 +0000
2016-09-06 18:30:00 +0000
答案 0 :(得分:1)
您需要在dateformat
中将时区设置为UTC
let dateformatter = NSDateFormatter()
dateformatter.dateFormat = "yyyy-MM-dd"
dateformatter.timeZone = NSTimeZone(name: "UTC")
start_date = dateformatter.dateFromString("2016-09-01")!
end_date = dateformatter.dateFromString("2016-09-07")!
这解决了我的问题。
答案 1 :(得分:0)
之前我遇到过类似的问题。我认为这与你的时区有关。经过一番尝试,我做到了这一点,并以某种方式起作用......
let components = NSCalendar.currentCalendar().components([.Year, .Month, .Day], fromDate: yourDate)
components.timeZone = NSTimeZone(name: "GMT")
let correctDate = NSCalendar.currentCalendar().dateFromComponents(components)!
基本上,将时区切换为GMT ......
我建议你创建一个扩展名:
extension NSDate {
func switchToCorrectTimeZone() -> NSDate {
let components = NSCalendar.currentCalendar().components([.Year, .Month, .Day], fromDate: self)
components.timeZone = NSTimeZone(name: "GMT")
return NSCalendar.currentCalendar().dateFromComponents(components)!
}
}