如何在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
相关产品推荐
相关产品推荐

