Dart中如何直接划分两个Duration对象?

How to directly divide two Duration objects in Dart?

在 Dart 中,假设您有:

Duration duration01 = Duration(milliseconds: 10000);
Duration duration02 = Duration(milliseconds: 100);

我知道虽然加法或减法似乎有效,但这样做:

double result = duration01 / duration02;

无效。

并且我知道如何通过展开和重新包装持续时间对象来使用基本数学来做到这一点...但是有没有办法像我尝试的那样直接做到这一点?

将一个 Duration 除以另一个不是大多数人需要做的事情,因此没有 built-in 方法可以做到。将一个 Duration 除以另一个当然不应该产生另一个 Duration 对象;这没有意义。

您总是可以将 Duration 对象转换为微秒,然后执行算术运算。由于Duration还没有operator /,你可以添加一个作为扩展方法,更方便:

extension DurationDivision on Duration {
  double operator / (Duration other) =>
      inMicroseconds / other.inMicroseconds;
}

void main() {
  Duration duration01 = Duration(milliseconds: 10000);
  Duration duration02 = Duration(milliseconds: 100);
  print(duration01 / duration02); // Prints: 100
}

您可以简单地使用Duration对象提供的功能。

试试这个代码:

Duration duration01 = Duration(milliseconds: 10000);
  Duration duration02 = Duration(milliseconds: 100);

  Duration result = Duration(
    milliseconds: duration01.inMilliseconds ~/ duration02.inMilliseconds,
  );

您还可以使用 Duration.inMilliseconds 以外的方法以您想要的任何形式获取持续时间对象,其中一些是:

  • 天数
  • 小时内
  • 微秒
  • 分钟