DateComponentsFormatter - показывает только час, описанный как минуты - ошибка?

Я использую DateComponentsFormatter чтобы добиться чего-то такого: "1 час 30 минут". Это мой код для этого:

let formatter = DateComponentsFormatter()
formatter.unitsStyle = .short
formatter.allowedUnits = [.hour, .minute]
return formatter.string(from: 90)!

Это должно вернуть 1 час и 30 минут, но мой вывод "1 минута". Что-то не так с моим кодом или это ошибка iOS?

1 ответ

Решение

DataComponentsFormatter string(from: TimeInterval) метод, который вы используете, ожидает интервал времени в секундах.

Итак, вы просите форматировщик отформатировать 90 секунд, а не 90 минут.

Это решит вашу проблему:

return formatter.string(from: 90 * 60)! // 90 minutes

Если вы сомневаетесь в таких вещах, прочитайте документацию. Документация показывает следующее для описания параметра:

Интервал времени, измеренный в секундах. Значение должно быть конечным числом. Отрицательные числа обрабатываются как положительные числа при создании строки.

Другие вопросы по тегам