我在日期格式方面遇到了真正的困难。我想完全忽略时区,因为所有时间都被认为是本地时间。我在 Playground 上试过了,效果很好。
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”,这正是我不想要的。我希望无论我现在身在何处,日期始终与保存时区相同。
有什么方法可以让它完全忽略时区?我想在本地保存一个日期并在本地检索它,但它一直在改变我的时间。在日期格式化程序中设置时区没有区别。为什么它在 Playground 上有效但在项目中无效?谢谢。
最佳答案
您可以忽略时区,将您的日期视为 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"
}
关于ios - Playground 上的 NSFormatter 与项目中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364998/