我想将AM / PM时间转换为24小时。这应该是微不足道的...但是我反对一个奇怪的问题:
let inputDateString = "11:05:45PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm:ssa"
let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???
if let inputDate = inputDate {
dateFormatter.dateFormat = "HH:mm:ss"
print(dateFormatter.stringFromDate(inputDate))
}
systemLocale
或GB语言环境,但这并没有帮助。您可以使用import Foundation
轻松将其粘贴到Playground以进行测试。
为什么我出错了?
- 编辑 -
如果您将inputDateString
更改为"01:05:45PM"
之类的任何其他小时,inputDate
将是相同的:/但如果您更改分钟或秒,则相应地更新。
答案 0 :(得分:2)
您需要将dateFormat更改为"hh:mm:ssa"
,因为小写h
表示输入时间为12小时格式。
DateFormatter使用Unicode标准进行格式化,因此它使用the Unicode Documentation中的值(适用于macOS 10.9和iOS 7及更高版本,截至08/2016)。
在http://nsdateformatter.com上可以找到更易于使用的参考。
答案 1 :(得分:0)
let inputDateString = "11:05:45PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HH:mm:ssa" // Here, change the format string to "hh:mm:ssa"
let inputDate = dateFormatter.dateFromString(inputDateString) // "Jan 1, 2000, 12:05 PM" ???
if let inputDate = inputDate {
dateFormatter.dateFormat = "HH:mm:ss"
print(dateFormatter.stringFromDate(inputDate))
}