带格式字符串的NSDateFormatter以短样式输出时间

时间:2016-07-21 19:27:11

标签: ios swift nsdateformatter

我们正在制作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版本中安装,输出正确。

有人能让我一瞥那里发生的事情吗?

1 个答案:

答案 0 :(得分:2)

您应该将timezonelocale设置为日期格式化程序,尝试如下:

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