DateComponentsFormatter показывает ведущий ноль
Я использую DateComponentsFormatter
отформатировать TimeInterval
в iOS Если у меня результат 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)
1 ответ
Решение
Если вы хотите отформатировать интервал как время, то лучшим решением будет использование 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
достаточно высок.
Использовать zeroFormattingBehavior = .pad
например:
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .positional
formatter.zeroFormattingBehavior = .pad
let outPut = formatter.string(from: TimeInterval(duration)) ?? ""