【发布时间】:2021-06-22 15:22:35
【问题描述】:
如何将小时和分钟整数值表示为格式为“9:30 am”的字符串?
目前,我有:
let hour: Int = 9
let minute: Int = 30
var dateComponents = DateComponents()
dateComponents.hour = hour
dateComponents.minute = minute
let time: String = DateComponentsFormatter.localizedString(from: dateComponents, unitsStyle: DateComponentsFormatter.UnitsStyle.positional)
print(time) // Prints "9:30", not "9:30 am"
我知道我可以在最后手动连接时间子午线,但我希望有一个内置功能。也许是不同的UnitsStyle?
【问题讨论】:
-
DateComponentsFormatter显示小时数而不是一天中的时间。DateComponents无论如何都是 24 小时制的。 -
@JoakimDanielson DateComponents 小时分量值范围是0-23
-
@JoakimDanielson 没有 am pm 组件
-
@Eric33187 世界各地的一些地方有夏令时转换。他们在夏天前后改变时钟以节省能源。所以有两个夏令时过渡日期。其中一个日期将少于 24 小时,另一个将有更多。因此,您可能会尝试设置一个不存在的时间,甚至是一个可能在同一天出现两次的时间。
-
哦,我明白了!所以换句话说,要设置时间,我应该总是使用日期,(这样时间是本地化的并且“正确”),而不是仅仅获取有时可能是错误的小时和分钟值。