操场上的 NSFormatter 与项目中的工作方式不同
NSFormatter in playground works different than in project
我在日期格式方面遇到了很大的困难。我想完全忽略时区,因为所有时间都被认为是本地时间。我在操场上试过了,效果很好。
var dateFormatter: NSDateFormatter = NSDateFormatter()
var dateString = "2015-09-02 22:05:00"
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
//dateFormatter.timeZone = NSTimeZone.localTimeZone()
let openDate = dateFormatter.dateFromString(dateString)
上面的代码创建了一个"Sep 2, 2015, 10:05 PM"的日期值,这正是我想要的。然而,当我将相同的代码复制并粘贴到一个简单的项目中时,返回的值总是“2015-09-03 04:05:00 +0000”,这正是我不想要的。我希望无论我现在身在何处,我都希望日期始终处于与保存日期相同的时区。
有什么方法可以让它完全忽略时区?我想在本地保存一个日期并在本地检索它,但它一直在改变我的时间。在日期格式化程序中设置时区没有区别。为什么它在操场上有效但在项目中无效?谢谢
NSDate adopts the NSCoding protocol, and can be placed directly in NSUserDefaults,因此您根本不必担心序列化问题。
您可以忽略时区,将您的日期视为 UTC 时间,如下所示:
let dateFormatter: NSDateFormatter = NSDateFormatter()
let dateString = "2015-09-02 22:05:00"
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)!
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
if let dateFromString = dateFormatter.dateFromString(dateString){
println(dateFromString) // "2015-09-02 22:05:00 +0000"
let stringFromDate = dateFormatter.stringFromDate(dateFromString)
println(stringFromDate) // "2015-09-02 22:05:00"
}
我在日期格式方面遇到了很大的困难。我想完全忽略时区,因为所有时间都被认为是本地时间。我在操场上试过了,效果很好。
var dateFormatter: NSDateFormatter = NSDateFormatter()
var dateString = "2015-09-02 22:05:00"
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
//dateFormatter.timeZone = NSTimeZone.localTimeZone()
let openDate = dateFormatter.dateFromString(dateString)
上面的代码创建了一个"Sep 2, 2015, 10:05 PM"的日期值,这正是我想要的。然而,当我将相同的代码复制并粘贴到一个简单的项目中时,返回的值总是“2015-09-03 04:05:00 +0000”,这正是我不想要的。我希望无论我现在身在何处,我都希望日期始终处于与保存日期相同的时区。
有什么方法可以让它完全忽略时区?我想在本地保存一个日期并在本地检索它,但它一直在改变我的时间。在日期格式化程序中设置时区没有区别。为什么它在操场上有效但在项目中无效?谢谢
NSDate adopts the NSCoding protocol, and can be placed directly in NSUserDefaults,因此您根本不必担心序列化问题。
您可以忽略时区,将您的日期视为 UTC 时间,如下所示:
let dateFormatter: NSDateFormatter = NSDateFormatter()
let dateString = "2015-09-02 22:05:00"
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateFormatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)!
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
if let dateFromString = dateFormatter.dateFromString(dateString){
println(dateFromString) // "2015-09-02 22:05:00 +0000"
let stringFromDate = dateFormatter.stringFromDate(dateFromString)
println(stringFromDate) // "2015-09-02 22:05:00"
}