如何使用 DateComponentsFormatter 格式化 HH:MM 中 00:00 的时间间隔偏移量
How to format time interval offset from 00:00 in HH:MM using DateComponentsFormatter
我有一个以毫秒为单位的值,我想以 HH:MM 格式显示
示例:
- 我的输入为 0,输出应为 00:00
- 如果输入是3600000,我需要的输出是01:00
我尝试了以下逻辑,但没有成功。
func secondsToHourMinFormat(time: TimeInterval) -> String {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
return formatter.string(from: time)
}
你的代码几乎是正确的,只是有一些遗漏。
- A
TimeInterval
以秒为单位,你传递的是毫秒,所以你需要除以 1000
- 您需要将
.zeroFormattingBehaviour
设置为 .pad
,这样您就不会在输出中得到零抑制
- 您需要以某种方式处理来自
string(from:)
的可选 return;我已经将你的功能更改为 return a String?
func secondsToHourMinFormat(time: TimeInterval) -> String? {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
formatter.zeroFormattingBehavior = .pad
return formatter.string(from: time/1000)
}
我有一个以毫秒为单位的值,我想以 HH:MM 格式显示
示例:
- 我的输入为 0,输出应为 00:00
- 如果输入是3600000,我需要的输出是01:00
我尝试了以下逻辑,但没有成功。
func secondsToHourMinFormat(time: TimeInterval) -> String {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
return formatter.string(from: time)
}
你的代码几乎是正确的,只是有一些遗漏。
- A
TimeInterval
以秒为单位,你传递的是毫秒,所以你需要除以 1000 - 您需要将
.zeroFormattingBehaviour
设置为.pad
,这样您就不会在输出中得到零抑制 - 您需要以某种方式处理来自
string(from:)
的可选 return;我已经将你的功能更改为 return aString?
func secondsToHourMinFormat(time: TimeInterval) -> String? {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
formatter.zeroFormattingBehavior = .pad
return formatter.string(from: time/1000)
}