我的 iOS 应用会将时间从时间戳格式化为时间字符串。 我想在应用程序中提供一个设置,该设置将覆盖系统的 12/24 小时格式。
我尝试过的:
self.timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle;
let locale:NSLocale = NSLocale.currentLocale();
if(Constants.isFormat12()){
timeFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("hh:mm", options: 0, locale: locale);
}else{
timeFormatter.dateFormat = NSDateFormatter.dateFormatFromTemplate("HH:mm", options: 0, locale: locale);
}
如果系统是 12 小时格式,但不是 24 小时格式,此代码将起作用。
我读了一些关于 stackoverflow 的帖子,他们建议将 NSDateFormatter
的语言环境设置为 en_US_POSIX
和 en_GB
这样时间就会格式化以 12 或 24 小时格式。
if(Constants.isFormat12()){
timeFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX");
timeFormatter.dateFormat = "hh:mm a";
}else{
timeFormatter.locale = NSLocale(localeIdentifier: "en_GB");
timeFormatter.dateFormat = "HH:mm";
}
但是,12 小时格式将显示 AM
和 PM
,而不是不同语言的“AM”和“PM”的本地化版本,例如“上午” "& "下午"in Chinese.
有没有办法强制 NSDateFormatter 使用 12/24 小时制?
最佳答案
有什么问题吗?
import Foundation
let formater = NSDateFormatter()
formater.setLocalizedDateFormatFromTemplate("hh.mm")
let time = NSDate() // "17 Nov 2015 14:42"
formater.stringFromDate(time) // "2:42 PM"
formater.setLocalizedDateFormatFromTemplate("HH:mm")
formater.stringFromDate(time) // "14:42"
..中文
import Foundation
let formater = NSDateFormatter()
formater.setLocalizedDateFormatFromTemplate("hh.mm")
let time = NSDate() // "17 Nov 2015 15:05"
formater.locale = NSLocale(localeIdentifier: "zh_CN")
formater.stringFromDate(time) // "3:04 下午"
formater.setLocalizedDateFormatFromTemplate("HH:mm")
formater.stringFromDate(time) // "15:05"
关于ios - 如何强制将 NSDateFormatter 用作 12 小时或 24 小时格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33326245/