【问题标题】:Convert seconds to mm:ss in dart在 dart 中将秒转换为 mm:ss
【发布时间】:2021-02-09 07:01:07
【问题描述】:

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

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

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

【问题讨论】:

  • minutes = (seconds modulo 3600) / 60?
  • 你能解释一下这是如何工作的吗?
  • 你的意思是mm:ss
  • @Hamed 是的

标签: flutter dart


【解决方案1】:

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

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

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

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,这是明确的。

【讨论】:

    【解决方案2】:

    你可以这样做:

    void main() {
      print(toMMSS(100));
    }
    
    String toMMSS(int value) =>
        '${formatDecimal(value ~/ 60)}:${formatDecimal(value % 60)}';
    
    String formatDecimal(num value) => '$value'.padLeft(2, '0');
    

    String toMMSS(int value) =>
        '${(value ~/ 60).toString().padLeft(2, '0')}:${(value % 60).toString().padLeft(2, '0')}';
    

    另外,您可以在int 上创建一个extension

    extension DateTimeExtension on int {
      String get toMMSS =>
          '${(this ~/ 60).toString().padLeft(2, '0')}:${(this % 60).toString().padLeft(2, '0')}';
    }
    

    用法:

    print(342.toMMSS);
    

    【讨论】:

      【解决方案3】:

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

        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 "";
          }
        }
      

      【讨论】:

        【解决方案4】:
        static String formatYMDHMSBySeconds(int milliseconds) {
            if (milliseconds == null) {
                return '';
            }
        
            DateTime dateTime = DateTime.fromMillisecondsSinceEpoch(milliseconds);
            return DateFormat("yyyy-MM-dd HH:mm:ss").format(dateTime);
        }
        

        【讨论】:

          猜你喜欢
          • 2021-09-11
          • 1970-01-01
          • 2019-01-09
          • 2012-05-09
          • 2021-01-14
          • 2021-07-03
          • 2020-09-14
          • 2019-10-05
          • 2023-03-14
          相关资源
          最近更新 更多