转换后的无效日期 12h -> 24h
Invalid date after conversion 12h -> 24h
我想将 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 中的值(适用于 macOS 10.9 和 iOS 7 及更新版本,自 08/2016 起)。
可以在 http://nsdateformatter.com 上找到更易于使用的参考资料。
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))
}
我想将 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 中的值(适用于 macOS 10.9 和 iOS 7 及更新版本,自 08/2016 起)。
可以在 http://nsdateformatter.com 上找到更易于使用的参考资料。
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))
}