我们有一个正在生产的 iOS 应用程序,我们使用一些自定义格式来表示日期内部表示。
我存储了一个全局日期格式化程序,如下所示:
static var InternalDateFormatter: NSDateFormatter = {
let dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
return dateFormatter
}()
使用 2016-07-21T16:46:51+0000
的 NSDate
实例,预期输出为 20160721 16:46
,但是在 2 部手机中,输出为 20160712 4:41 p.m.
。
该设备是运行 iOS 9.3 的 iPhone 5。
我尝试在相同型号和相同 iOS 版本的设备中安装,输出是正确的。
有人可以让我看看那里发生了什么吗?
最佳答案
您应该将时区
和区域
设置为日期格式化程序,尝试如下:
static var InternalDateFormatter: NSDateFormatter = {
let dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
dateFormatter.timeZone = NSTimeZone.localTimeZone()
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
return dateFormatter
}()
使用en_US_POSIX
区域设置ID将始终为您提供am-pm
美国时间标准。
但您可以选择任何区域设置 ID - https://gist.github.com/jacobbubu/1836273
关于ios - 具有格式字符串的 NSDateFormatter 以短样式输出时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512787/