一尘不染

像HH:mm:ss一样格式化持续时间

flutter

是否有一种很好的方式可以将h的持续时间设置为hh:mm:ss格式,而无需处理时区?

我尝试了这个:

DateTime durationDate = DateTime.fromMillisecondsSinceEpoch(0);
String duration = DateFormat('hh:mm:ss').format(durationDate);

但我总是要花1个小时,在这种情况下,它会说 01:00:00

当我这样做时:

Duration(milliseconds: 0).toString();

我得到这个: 0:00:00.000000


阅读 297

收藏
2020-08-13

共1个答案

一尘不染

您可以使用Duration和实现此方法:

String _printDuration(Duration duration) {
  String twoDigits(int n) => n.toString().padLeft(2, "0");
  String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
  String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60));
  return "${twoDigits(duration.inHours)}:$twoDigitMinutes:$twoDigitSeconds";
}

用法:

final now = Duration(seconds: 30);
print("${_printDuration(now)}");
2020-08-13