ios - 转换后日期无效 12 小时 -> 24 小时

标签 ios swift nsdateformatter

我想将 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))
}
  1. 我想也许它正在使用一些奇怪的时区来转换时间。因此,我尝试添加 systemLocale 或 GB 区域设置,但没有帮助。
  2. 然后我想到了一个想法,也许它不能设置早于 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/

相关文章:

swift - 如何使用 JSQMessagesViewController 发送图像?

ios - Objective-C 如何本地化持续时间 : "1 Year", "2 Years"、 "3 Years"等

ios - 下载用于离线安装的 iOS SDK 7.0 文档

ios - 自定义单元格内的 UITableViewCell 按钮动画,我得到错误的单元格索引路径以显示动画

ios - 重用 ObjectMapper 模型进行多重映射

ios - 在没有 Segue 的情况下单击第一个 ViewController 上的按钮后更改第二个 ViewController 的标签文本

iphone - 如何更改存储在字符串中的日期格式? objective-c

ios - NSDateFormatter 中的无效日期

ios - 有没有办法在 Swift 中对常量进行条件赋值?

iphone - 将通过 AUFilePlayer 播放的音频保存到外部文件