在飞镖中将秒转换为 mm:ss

时间:2021-02-09 07:01:07

标签: flutter dart

我想将秒转换为 HH:SS 格式的分钟和秒,但我的逻辑没有给我我想要的。

  static double toMin (var value){
            return (value/60);
          }

我还希望能够将余数添加到分钟值中,因为有时我的除法会给我一个超过 60 的秒值,这是不准确的

4 个答案:

答案 0 :(得分:1)

您可以尝试以下解决方案,我就是这样做的:

  String formatHHMMSS(int seconds) {
    if (seconds != null && seconds != 0) {
      int hours = (seconds / 3600).truncate();
      seconds = (seconds % 3600).truncate();
      int minutes = (seconds / 60).truncate();

      String hoursStr = (hours).toString().padLeft(2, '0');
      String minutesStr = (minutes).toString().padLeft(2, '0');
      String secondsStr = (seconds % 60).toString().padLeft(2, '0');

      if (hours == 0) {
        return "$minutesStr:$secondsStr";
      }
      return "$hoursStr:$minutesStr:$secondsStr";
    } else {
      return "";
    }
  }

答案 1 :(得分:0)

你可以这样做:

void main() {
  print(toMMSS(100));
}

String toMMSS(int value) =>
    '${formatDecimal(value ~/ 60)}:${formatDecimal(value % 60)}';

String formatDecimal(num value) => value < 10 ? '0$value' : value.toString();

答案 2 :(得分:0)

Duration class 可以为您完成大部分工作。

var minutes = Duration(seconds: seconds).inMinutes;

您可以通过执行以下操作以 String 格式生成 mm:ss

String formatDuration(int totalSeconds) {
  final duration = Duration(seconds: totalSeconds);
  final minutes = duration.inMinutes;
  final seconds = totalSeconds % 60;

  final minutesString = '$minutes'.padLeft(2, '0');
  final secondsString = '$seconds'.padLeft(2, '0');
  return '$minutesString:$secondsString';
}

也就是说,我建议反对使用 mm:ss 格式,因为在没有上下文的情况下,不清楚“12:34”是代表 12 分钟 34 秒还是 12 小时 34 分钟。我建议改用 12m34s,这是明确的。

答案 3 :(得分:-1)

static String formatYMDHMSBySeconds(int milliseconds) {
    if (milliseconds == null) {
        return '';
    }

    DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(milliseconds);
    return DateFormat("yyyy-MM-dd HH:mm:ss").format(dateTime);
}