Я использую Dart (с Flutter) и мне нужно преобразовать время, выраженное в миллисекундах, в строку.
При преобразовании я хочу показать:
- сантисекунды
- секунд
- минут
- часов
Всегда должны показываться секунды и секунды, а минуты и часы - только если они больше 0.
Пример ожидаемых выходных данных:
time = 0 => "0.00"
time = 123 => "0.12"
time = 9012 => "9.01"
time = 19023 => "19.02"
time = 123123 => "2:03.12"
time = 5 * 3600000 => "5:00:00.00"
Самое левое ненулевое значение может быть одной или несколькими цифрами, а остальные должны состоять из двух цифр.
Это мой код:
String convertTime(int time) {
int centiseconds = (time % 1000) ~/ 10;
time ~/= 1000;
int seconds = time % 60;
time ~/= 60;
int minutes = time % 60;
time ~/= 60;
int hours = time;
if (hours > 0) {
return "$hours:${_twoDigits(minutes)}:${_twoDigits(seconds)}.${_twoDigits(centiseconds)}";
} else if (minutes > 0) {
return "$minutes:${_twoDigits(seconds)}.${_twoDigits(centiseconds)}";
} else {
return "$seconds.${_twoDigits(centiseconds)}";
}
}
String _twoDigits(int time) {
return "${time<10?'0':''}$time";
}
Как я могу улучшить свой код?Какой самый эффективный способ выполнить это преобразование?