ios - 具有格式字符串的 NSDateFormatter 以短样式输出时间

标签 ios swift nsdateformatter

我们有一个正在生产的 iOS 应用程序,我们使用一些自定义格式来表示日期内部表示。

我存储了一个全局日期格式化程序,如下所示:

static var InternalDateFormatter: NSDateFormatter = {
    let dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
    return dateFormatter
}()

使用 2016-07-21T16:46:51+0000NSDate 实例,预期输出为 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/

相关文章:

ios - 尝试实现 TableView 并获取线程 1 : signal SIGABRT error?

swift - 在 Swift 中使用嵌入式数据对操作码进行建模的惯用方法

ios - 如何通过自动布局获取iOS中两个元素之间的动态距离

iphone - iOS 开发 : NSDateFormatter problem

cocoa - NSTableView 中的自定义日期格式

ios - iPhone 上的背景图像大小

ios - iOS“默认” UIWebView/WebKit上的WebAudio支持

ios - 生成.app文件并安装在设备上

ios - 使用 Firebase 3 从 FIRUser 获取创建日期和上次登录日期

ios - NSDateFormatter 不支持长格式的日期周期 ('b' 或 'B' )