如何在Flutter中将类似字符串的Duration转换为真实的的Duration?

lnvxswe2  于 2023-03-31  发布在  Flutter
关注(0)|答案(4)|浏览(304)

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

qoefvg9y

qoefvg9y1#

使用如下解析函数,然后使用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);
}
7qhs6swi

7qhs6swi2#

duration提供函数parseTimetryParseTime来解析Duration().toString()获得的持续时间字符串。
用法很简单:

print(parseTime(Duration(hours: 5, seconds: 10, milliseconds: 567).toString()));
tcbh2hod

tcbh2hod3#

使用DateTime和DateFormat的另一种方法:

Duration durationParse(String time) {
  final ts = DateFormat('y-MM-dd').format(DateTime.now());
  final dt = DateTime.parse('$ts $time');
  return Duration(hours: dt.hour, minutes: dt.minute, seconds: dt.second);
}
ru9i0ody

ru9i0ody4#

List<String> timeParts = time.split(':');

Duration duration = Duration(hours: int.parse(timeParts[0]), minutes: int.parse(timeParts[1]), seconds: int.parse(timeParts[2]));

相关问题