当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Duration用法及代码示例


dart:core 库中Duration 类的用法介绍如下。

时间跨度,例如 27 天 4 小时 12 分钟 3 秒。

Duration 表示从一个时间点到另一个时间点的差异。如果差异是从较晚的时间到较早的时间,则持续时间可能是"negative"。

持续时间与上下文无关。例如,2 天的持续时间始终为 48 小时,即使在时区即将进行 daylight-savings 切换时添加到 DateTime 也是如此。 (参见DateTime.add)。

尽管名称相同,但 Duration 对象并未按照 ISO 8601 的规定实现 "Durations"。特别是,持续时间对象不会跟踪单独提供的成员(例如 "days" 或 "hours"),但仅使用这些参数来计算相应时间间隔的长度。

要创建一个新的 Duration 对象,请使用该类的单个构造函数并提供适当的参数:

const fastestMarathon = Duration(hours: 2, minutes: 3, seconds: 2);

Duration 表示单个微秒数,它是构造函数的所有单个参数的总和。

属性可以以不同的方式访问该单个数字。例如,inMinutes 给出了总持续时间中的整分钟数,其中包括作为 "hours" 提供给构造函数的分钟数,并且可以大于 59。

const fastestMarathon = Duration(hours: 2, minutes: 3, seconds: 2);
print(fastestMarathon.inDays); // 0
print(fastestMarathon.inHours); // 2
print(fastestMarathon.inMinutes); // 123
print(fastestMarathon.inSeconds); // 7382
print(fastestMarathon.inMilliseconds); // 7382000

持续时间可以是负数,在这种情况下,从持续时间派生的所有属性也是非正数。

const overDayAgo = Duration(days: -1, hours: -10);
print(overDayAgo.inDays); // -1
print(overDayAgo.inHours); // -34
print(overDayAgo.inMinutes); // -2040

使用属性之一(例如 inDays )以指定时间单位检索 Duration 的整数值。请注意,返回值是向下舍入的。例如,

const aLongWeekend = Duration(hours: 88);
print(aLongWeekend.inDays); // 3

此类提供了一组算术和比较运算符,以及一组用于转换时间单位的常量。

const firstHalf = Duration(minutes: 45); // 00:45:00.000000
const secondHalf = Duration(minutes: 45); // 00:45:00.000000
const overTime = Duration(minutes: 30); // 00:30:00.000000
final maxGameTime = firstHalf + secondHalf + overTime;
print(maxGameTime.inMinutes); // 120

// The duration of the firstHalf and secondHalf is the same, returns 0.
var result = firstHalf.compareTo(secondHalf);
print(result); // 0

// Duration of overTime is shorter than firstHalf, returns < 0.
result = overTime.compareTo(firstHalf);
print(result); // < 0

// Duration of secondHalf is longer than overTime, returns > 0.
result = secondHalf.compareTo(overTime);
print(result); // > 0

也可以看看:

实现的类型

Comparable<Duration>

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Duration class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。