flutter - Dart - 将毫秒转换为字符串
问题描述
我正在使用 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";
}
如何改进我的代码?执行此转换的最有效方法是什么?
解决方案
根据这个答案,您可以实现这样的方法:
String printDuration(Duration duration) {
String twoDigits(int n) {
if (n >= 10) return "$n";
return "0$n";
}
String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60));
if (duration.inHours > 0)
return "${twoDigits(duration.inHours)}:$twoDigitMinutes:$twoDigitSeconds";
else
return "$twoDigitMinutes:$twoDigitSeconds";
}
推荐阅读
- .net-core - Visual Studio 项目无法加载“无法找到 .NET SDK”、错误,同时 Cmder 无法加载
- postgresql - 从 Postgresql 中的日期中减去数字
- python - 使用python中的面板数据调整随机森林超参数
- c++ - Cout 在 for 循环中使用不正确的变量值执行(同时也失败了?)
- javascript - 如何在函数中设置变量?
- url - URL 子域 ==> IIS 网站:添加或删除导致应用程序池回收的绑定
- extjs - Sencha Themer:用户界面完全卡住,然后无法打开我的主题
- python - 如何遍历只有 2 个小数点的列中的字符串,例如 100.00.0?
- javascript - JavaScript:获取嵌套对象(或 JSON)中给定键值对的路径
- python - 熊猫合并范围日期