我的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"用不同的语言,例如"上午" &安培; "下午"中文。
有没有办法强制NSDateFormatter使用12/24小时?
答案 0 :(得分:1)
有什么问题?
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"