DateComponentsFormatter 显示前导零
DateComponentsFormatter show leading zero
我用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)
如果你想将间隔格式化为时间,那么最好的解决方案是使用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
不会用零填充,因为它应该与更高的单位一起使用,例如如果您的 TimeInterval
足够高,您可以获得类似“300:24”的结果。
例如使用zeroFormattingBehavior = .pad
:
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .positional
formatter.zeroFormattingBehavior = .pad
let outPut = formatter.string(from: TimeInterval(duration)) ?? ""
我用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)
如果你想将间隔格式化为时间,那么最好的解决方案是使用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
不会用零填充,因为它应该与更高的单位一起使用,例如如果您的 TimeInterval
足够高,您可以获得类似“300:24”的结果。
例如使用zeroFormattingBehavior = .pad
:
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .positional
formatter.zeroFormattingBehavior = .pad
let outPut = formatter.string(from: TimeInterval(duration)) ?? ""