我遇到了一个非常奇怪的问题,听起来像是系统错误。我只想使用小时和分钟信息来格式化日期,并在必要时显示AM / PM。
这是我的代码:
extension NSDate { func localizedStringTime()->String { let dateFormatter = NSDateFormatter() dateFormatter.locale = NSLocale.currentLocale() dateFormatter.dateFormat = "HH:mm" } }
如您所见,我正在使用HH而不使用,hh并且如Apple文档所述,如果用户选择12h格式,它应该自动添加AM / PM:
HH
hh
时间的表示可能是13:00。但是,在iOS中,如果用户将24小时制切换为关闭,则时间可能是1:00 pm。
我发现它可以在我的设备(我位于欧洲)上完美运行,但是在美国设备和模拟器上却无法运行,即使用户选择了12h格式,它仍然会返回24h格式。我也曾尝试将“地区”更改为“美国”,但是从我的设备上它仍然可以正常工作。
您看到我的代码有任何问题吗?反正这个问题也是
您可以像这样使用date函数中的本地化字符串…
extension NSDate { func localizedStringTime()->String { return NSDateFormatter.localizedStringFromDate(self, dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.ShortStyle) } }