You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何将字符串转为24小时制的Date类型?

关于Swift中DateFormatter解析24小时制时间的疑问解答

嘿,其实你的代码已经正确拿到了代表22:30的Date对象啦!之所以显示成「Jan 1, 2000 at 10:30 PM」,核心原因是:Date本身并不存储任何显示格式——它本质上只是一个记录时间戳的对象(表示距离某个基准时间的秒数/毫秒数),你看到的12小时制是系统默认的字符串格式化结果,和Date内部存储的时间值无关。

具体说明和验证方法:

  • 你的解析逻辑是对的:dateFormatter.dateFormat = "HH:mm"已经明确告诉系统用24小时制规则解析字符串,所以timeFromString这个Date对象确实对应着2000年1月1日22:30这个时间点(因为只传入了时分,DateFormatter会自动补全默认的年月日为2000-01-01)。
  • 如果想验证或输出24小时制的时间字符串,只需要用同一个DateFormatter把Date再转回去就行:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let timeAsString: String = "22:30"

if let timeFromString = dateFormatter.date(from: timeAsString) {
    // 将Date转回24小时制字符串
    let formatted24hTime = dateFormatter.string(from: timeFromString)
    print(formatted24hTime) // 输出结果为 "22:30"
}
  • 直接打印Date对象时,系统会根据当前设备的区域设置和默认格式来展示,所以才会出现12小时制的显示,但这完全不影响Date实际代表的时间是22:30。

内容的提问来源于stack exchange,提问作者Agung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:20:19