DateComponentsFormatter显示前导零

时间:2018-04-24 14:40:26

标签: ios swift date nsdateformatter

我使用DateComponentsFormatter格式化iOS中的TimeInterval。如果我得到1:09的结果,则应显示前导零。结果如下:01:09。 DateComponentsFormatter可以实现这一点。

这是我的示例代码:

let interval: TimeInterval = 4155

let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
formatter.allowedUnits = [.hour, .minute]
formatter.zeroFormattingBehavior = .pad
formatter.collapsesLargestUnit = false

formatter.string(from: interval)

2 个答案:

答案 0 :(得分:4)

如果要将时间间隔格式化为时间,那么最佳解决方案是使用DateFormatter

let interval: TimeInterval = 4155
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "HH:mm"

print(formatter.string(from: Date(timeIntervalSinceReferenceDate: interval)))

这将始终使用相同的格式,始终显示小时。

DateComponentFormatter不会填充零,因为它应该与更高的单位一起使用,例如你可以得到像" 300:24"如果你的TimeInterval足够高。

答案 1 :(得分:0)

例如使用zeroFormattingBehavior = .pad

let formatter = DateComponentsFormatter()
                formatter.allowedUnits = [.hour, .minute, .second]
                formatter.unitsStyle = .positional
                formatter.zeroFormattingBehavior = .pad

                let outPut = formatter.string(from: TimeInterval(duration)) ?? ""