我们正在制作iOS应用,我们使用一些自定义格式作为日期内部表示。
我存储了一个像这样的全局日期格式化程序:
static var InternalDateFormatter: NSDateFormatter = {
let dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
return dateFormatter
}()
NSDate
2016-07-21T16:46:51+0000
实例预期输出为20160721 16:46
,但在2部手机中,输出为20160712 4:41 p.m.
。
该设备是带有iOS 9.3的iPhone 5 我尝试在设备,相同型号和相同iOS版本中安装,输出正确。
有人能让我一瞥那里发生的事情吗?
答案 0 :(得分:2)
您应该将timezone
和locale
设置为日期格式化程序,尝试如下:
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