huruji / blog

红日初升,其道大光:sun_with_face::house_with_garden:请star或watch,不要fork
https://juejin.im/user/5894886f2f301e00693a3e49/posts
158 stars 11 forks source link

Dart 的 Duration #80

Open huruji opened 5 years ago

huruji commented 5 years ago

Duration 顾名思义就是指的一段时间,用 Duration 类可以构造一段时间的对象,Duration 对象实例化的参数非常通俗易懂,可以传入对应的天、时、分、秒、毫秒、微秒 来构造对应的时间段。

Duration({int days: 0, int hours: 0, int minutes: 0, int seconds: 0, int milliseconds: 0, int microseconds: 0 })

如:

Duration fast = Duration(minutes: 123, hours: 24);
Duration slow = Duration(hours: 20);

实例可以通过 inDays inHours inMinutes 等属性返回该时间段转换为天数、小时、分钟等,此时为向下取整。

Duration fast = Duration(minutes: 123, hours: 24);
print(fast.inDays); // 1

实例化时是可以传入负数的,Duration 也提供了 abs() 方法来获取对应的绝对值:

  Duration ne = Duration(hours: -24);
  print(ne.inDays); // -1
  print(ne.abs().inDays); // 1

比较两个 Duration 对象的大小可以使用 compareTo 方法,如果相等则返回0,大于则返回1,小于则返回 -1,

  Duration fast = Duration(minutes: 123, hours: 24);
  Duration slow = Duration(hours: 20);

  print(fast.compareTo(slow)); // 1
  print(slow.compareTo(fast)); // -1
  print(fast.compareTo(fast)); // 0

更方便的方法是使用操作符,Duration 对象支持 + 、-、*、<、<=、==、>= 、> 等操作符号,乘法操作符另一个乘数是一个整数,而不是 Duration 对象:

除此之外,Duration 还提供了一些常量,如:hoursPerDay、minutesPerDay,hoursPerDay 永远等于 24。