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

如何在Swift中使用Date.formatted()实现24小时制时间格式化?

解决Swift Date.formatted()生成24小时制时间的问题

你遇到的问题是因为.hour(.twoDigits(amPM: .omitted))默认采用12小时制格式,即便省略了AM/PM标记,输出依然会按12小时制解析。要生成24小时制的时间,只需明确指定小时格式为24小时制即可,完全不需要用到DateFormatter。

方法一:指定24小时制时钟格式

直接在.hour()的配置里通过clock: .twentyFourHour参数明确启用24小时制:

import Foundation

let date = try! Date("2023-07-25T16:23:00Z", strategy: .iso8601)
print(date.formatted(.dateTime.hour(.twoDigits(clock: .twentyFourHour)).minute()))

// 输出结果:17:23

方法二:使用预定义的24小时制时间模板

也可以直接通过pattern参数指定24小时制的时间格式字符串,其中HH代表24小时制的两位小时数,mm代表两位分钟数:

import Foundation

let date = try! Date("2023-07-25T16:23:00Z", strategy: .iso8601)
print(date.formatted(.dateTime.time(pattern: "HH:mm")))

// 输出结果:17:23

这两种方法都能在不依赖DateFormatter的前提下,正确输出英国夏令时(BST)下的24小时制本地时间(UTC16:23对应BST17:23)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:52:42