一尘不染

NSDateFormatter时间格式取决于语言环境

swift

我遇到了一个非常奇怪的问题,听起来像是系统错误。我只想使用小时和分钟信息来格式化日期,并在必要时显示AM / PM。

这是我的代码:

extension NSDate {

    func localizedStringTime()->String {

        let dateFormatter = NSDateFormatter()
        dateFormatter.locale = NSLocale.currentLocale()
        dateFormatter.dateFormat = "HH:mm"
    }
}

如您所见,我正在使用HH而不使用,hh并且如Apple文档所述,如果用户选择12h格式,它应该自动添加AM / PM:

时间的表示可能是13:00。但是,在iOS中,如果用户将24小时制切换为关闭,则时间可能是1:00 pm。

我发现它可以在我的设备(我位于欧洲)上完美运行,但是在美国设备和模拟器上却无法运行,即使用户选择了12h格式,它仍然会返回24h格式。我也曾尝试将“地区”更改为“美国”,但是从我的设备上它仍然可以正常工作。

您看到我的代码有任何问题吗?反正这个问题也是


阅读 268

收藏
2020-07-07

共1个答案

一尘不染

您可以像这样使用date函数中的本地化字符串…

extension NSDate {
    func localizedStringTime()->String {
        return NSDateFormatter.localizedStringFromDate(self, dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.ShortStyle)
    }
}
2020-07-07