Flutter/Dart: 从双倍(小时)解析持续时间

Flutter/Dart: parse Duration from double (hours)

我有一个双精度值,它是我需要将其转换为持续时间的小时数。假设我有一个像这样的函数原型

Duration parseDurationFromDouble(double d) {
    // parse the double
    return parsedDuration;
}

2.5 因为我的时长是双倍存储的,那么函数应该是return,像这样:

Duration(hours: 2, minutes: 30)

如何在 Dart 中执行此操作?可以直接转换吗?还是应该通过字符串插值来完成?

提前致谢。

Duration(minutes: (hoursDuration * 60).toInt());

正如@MuhammadQasim 指出的那样,您可以通过将原始小时乘以分钟并四舍五入来实现。这有一个问题,如果你关心秒、毫秒或微秒,穆罕默德的解决方案会丢失这些,这就是为什么我认为值得发布频谱的另一端,甚至微秒都不会四舍五入。

Duration parseDurationFromDouble(double hours) {
    return Duration(
      microseconds: (hours * Duration.microsecondsPerHour).toInt()
    );
}

你可以试试这个。手动将值转换为小时。分秒。

void parseDurationFromDouble(double value){
  int hours = value.toInt();
  int minutes = ((value - hours) * 60).toInt();
  int seconds = ((((value - hours) * 60) - minutes) * 60).toInt();
  print("$hours:$minutes:$seconds");
  Duration(hours: hours, minutes: minutes, seconds: seconds);
}