我想将 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 区域设置,但没有帮助。 - 然后我想到了一个想法,也许它不能设置早于 01.01.2000 12:00:00 的日期(这是没有意义的,因为它至少应该从 1970 年开始工作)。因此我添加了日期、月份等以将其移至 2005 年,但问题仍然存在。
您可以使用 import Foundation
轻松地将其粘贴到 Playground 中进行测试。
为什么我的时间是错误的?
-- 编辑--
如果将 inputDateString
更改为任何其他时间,例如 "01:05:45PM"
,inputDate
将是相同的:/但是如果您更改分钟或秒,它会相应更新。
最佳答案
您需要将日期格式更改为 "hh:mm:ssa"
,小写 h
表示输入时间为 12 小时格式。
DateFormatter 使用 Unicode 标准进行格式化,因此它使用 the Unicode Documentation 中找到的值。 (截至 2016 年 8 月,适用于 macOS 10.9 和 iOS 7 及更高版本)。
更易于使用的引用可以在 http://nsdateformatter.com 上找到。 。
关于ios - 转换后日期无效 12 小时 -> 24 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102648/