Dart - конвертировать миллисекунды в строку - PullRequest
0 голосов
/ 10 июля 2019

Я использую 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";
}

Как я могу улучшить свой код?Какой самый эффективный способ выполнить это преобразование?

...