如何在Flutter中将像字符串这样的Duration转换为真实的Duration?

时间:2019-02-24 13:53:51

标签: flutter

正如标题所述,我得到了一个字符串“ 01:23.290”,它看起来像一个“持续时间”,但不是。现在,我需要使用它与真实的Duration进行比较,而我不知道如何处理它。有什么方法吗?

2 个答案:

答案 0 :(得分:2)

使用这样的解析函数,然后使用Duration的比较方法:

Duration parseDuration(String s) {
  int hours = 0;
  int minutes = 0;
  int micros;
  List<String> parts = s.split(':');
  if (parts.length > 2) {
    hours = int.parse(parts[parts.length - 3]);
  }
  if (parts.length > 1) {
    minutes = int.parse(parts[parts.length - 2]);
  }
  micros = (double.parse(parts[parts.length - 1]) * 1000000).round();
  return Duration(hours: hours, minutes: minutes, microseconds: micros);
}

答案 1 :(得分:0)

简单来说,toString()方法可以做到这一点。有关详细信息:

https://docs.flutter.io/flutter/dart-core/Duration/toString.html

将此复制到dartpad并尝试一些新的东西:

void main() {
  var duration = Duration(minutes: 42);
  print('${duration.toString()}');
}

或者您可以为持续时间toString方法分配一个String变量。

String sDuration = duration.toString();
  print('${sDuration}');

String duration = Duration(minutes: 42).toString();