【问题标题】:How to format an integer to ss:m如何将整数格式化为 ss:m
【发布时间】:2020-04-21 05:24:48
【问题描述】:

我正在尝试从 int 中获取以下格式:ss:m(s = 秒,m = 毫秒)来自倒数计时器。如果有分钟,格式应该是mm:ss:m

这是我的代码:

final int currentTime = 100; // 10 seconds
final Duration duration = Duration(milliseconds: 100);
    Timer.periodic(duration, (Timer _timer) {
      if (currentTime <= 0) {
        _timer.cancel();
      } else {
        currentTime--;
        print(currentTime);
      }
});

我尝试将 currentTime 添加到 Duration 以毫秒为单位,但它没有给我想要的结果。我做错了什么,我怎样才能得到正确的格式?

【问题讨论】:

标签: flutter dart


【解决方案1】:

我已经使用下面的方法以 hh:mm:ss / mm:ss 格式获取它,您可以调整以获取 s:mm

String getTime(int milis) {
    Duration position = Duration(milliseconds: milis);
    String twoDigits(int n) {
      if (n >= 10) return "$n";
      return "0$n";
    }

    String twoDigitMinutes = twoDigits(position.inMinutes.remainder(60));
    String twoDigitSeconds = twoDigits(position.inSeconds.remainder(60));
    String time;
    if (twoDigits(position.inHours) == "00") {
      time = "$twoDigitMinutes:$twoDigitSeconds";
    } else {
      time = "${twoDigits(position.inHours)}:$twoDigitMinutes:$twoDigitSeconds";
    }
    return time;
  }

【讨论】:

    【解决方案2】:

    试试Duration.toString(),它会给你一个符合你要求的字符串 更准确的

    Duration(milliseconds:currentTime).toString()
    

    而 100 毫秒不是 10 秒

    10000 毫秒是 10 秒

    【讨论】:

      猜你喜欢
      • 2019-07-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2011-05-04
      • 2011-05-06
      • 2014-04-22
      • 1970-01-01
      • 2020-01-24
      相关资源
      最近更新 更多