【问题标题】:Time with flutter飘飘的时光
【发布时间】:2021-11-07 19:48:47
【问题描述】:

我对颤振完全陌生,我不明白如何解决问题。 我实际上正在开发一个卡丁车比赛应用程序并且:

  1. 我需要读取像 1:02.456 这样的字符串
  2. 在某个时间转换
  3. 与另一个类似于第一个字符串的字符串进行比较
  4. 去做点什么

es:

blap = null;
if(1:02.456 < 1:03.589){
    blap = '1:02.456';
} else {
    blap = '1:03.589;
}

我在网上看到我可以使用 DateTime 类,但每次我尝试转换该类的对象中的字符串时,我都没有得到想要的结果。

有更好的方法吗? 谢谢。

【问题讨论】:

  • 我怀疑你想解析持续时间,而不是时间。 DateTime 代表一个时刻,是不合适的。我只是用正则表达式解析字符串,在每个组件上使用int.parse,并适当地组合小时、分钟、秒和毫秒。
  • 我确信还有其他关于从Strings 解析Durations 的问题,但这里有一个:String is not a subtype of duration in flutter

标签: flutter datetime timer


【解决方案1】:

如果您正在开发一款卡丁车比赛应用程序,您可能需要使用 Duration,而不是 DateTime。

这是将像您这样的字符串转换为 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);
}

然后,以您想要的方式比较两个 Duration,这是一个示例:

String blap;
Duration time1=Duration(hours: 1),time2=Duration(hours: 2);
if(time1.compareTo(time2)<0){
  //time2 is greater than time1
  blap=time1.toString();
}else{
  blap=time2.toString();
}

【讨论】:

    猜你喜欢
    • 2020-11-29
    • 2022-12-13
    • 2021-09-12
    • 2020-12-09
    • 2019-07-14
    • 2021-10-05
    • 2021-01-20
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多