NSDateFormatter 时间格式取决于 Locale
NSDateFormatter time format depending on Locale
我遇到了一个非常奇怪的问题,听起来更像是系统错误。
我想仅使用小时和分钟信息来格式化日期,并在必要时显示 AM/PM。
这是我的代码:
extension NSDate {
func localizedStringTime()->String {
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.currentLocale()
dateFormatter.dateFormat = "HH:mm"
}
}
如您所见,我使用的是 HH
而不是 hh
并且如 Apple 文档所述,如果用户选择 12h 格式,它应该自动添加 AM/PM:
The representation of the time may be 13:00. In iOS, however, if the
user has switched 24-Hour Time to Off, the time may be 1:00 pm.
我发现它在我的设备(我在欧洲)上运行良好,但在美国设备和模拟器上不起作用,即使用户选择 12h 格式,它仍然返回 24h 格式。
我也曾尝试将我的地区更改为美国,但在我的设备上它仍然可以正常工作。
你发现我的代码有什么问题吗?
反正这个问题也是
您可以像这样使用日期函数中的本地化字符串...
extension NSDate {
func localizedStringTime()->String {
return NSDateFormatter.localizedStringFromDate(self, dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.ShortStyle)
}
}
Swift 3 & 4:
extension Date {
var localizedStringTime: String {
return DateFormatter.localizedString(from: self, dateStyle: .none, timeStyle: .short)
}
}
我遇到了一个非常奇怪的问题,听起来更像是系统错误。 我想仅使用小时和分钟信息来格式化日期,并在必要时显示 AM/PM。
这是我的代码:
extension NSDate {
func localizedStringTime()->String {
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.currentLocale()
dateFormatter.dateFormat = "HH:mm"
}
}
如您所见,我使用的是 HH
而不是 hh
并且如 Apple 文档所述,如果用户选择 12h 格式,它应该自动添加 AM/PM:
The representation of the time may be 13:00. In iOS, however, if the user has switched 24-Hour Time to Off, the time may be 1:00 pm.
我发现它在我的设备(我在欧洲)上运行良好,但在美国设备和模拟器上不起作用,即使用户选择 12h 格式,它仍然返回 24h 格式。 我也曾尝试将我的地区更改为美国,但在我的设备上它仍然可以正常工作。
你发现我的代码有什么问题吗? 反正这个问题也是
您可以像这样使用日期函数中的本地化字符串...
extension NSDate {
func localizedStringTime()->String {
return NSDateFormatter.localizedStringFromDate(self, dateStyle: NSDateFormatterStyle.NoStyle, timeStyle: NSDateFormatterStyle.ShortStyle)
}
}
Swift 3 & 4:
extension Date {
var localizedStringTime: String {
return DateFormatter.localizedString(from: self, dateStyle: .none, timeStyle: .short)
}
}