Duration

一段时间,例如 27 天,4 小时,12 分钟和 3 秒。

Duration 代表从一点时间到另一点时间的差异。如果差异是从较晚的时间到较早的时间,则持续时间可能是“负数”。

持续时间是上下文独立的。例如,持续时间为 2 天始终是 48 小时,即使在时间区即将进行夏令时切换时将其添加到 DateTime。 (参见 DateTime.add)。

尽管名称相同,但 Duration 对象并没有按照 ISO 8601 规范实现“持续时间”。特别是,持续时间对象不会跟踪单独提供的成员(如“天”或“小时”),而只使用这些参数来计算相应时间间隔的长度。

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

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

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

属性可以以不同的方式访问这个单一数字。例如,inMinutes 提供了总持续时间中的完整分钟数,包括作为“小时”提供给构造函数的分钟,并且可能大于 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

另请参阅

实现类型

构造函数

Duration({int days = 0, int hours = 0, int minutes = 0, int seconds = 0, int milliseconds = 0, int microseconds = 0})
创建一个新的 Duration 对象,其值是所有单独部分的和。
const

属性

hashCode int
此对象的哈希码。
no setteroverride
inDays int
Duration 包含的完整天数。
no setter
inHours int
Duration 包含的完整小时数。
no setter
inMicroseconds int
Duration 包含的完整微秒数。
no setter
inMilliseconds int
Duration 包含的完整毫秒数。
no setter
inMinutes int
Duration 包含的完整分钟数。
no setter
inSeconds int
Duration 包含的完整秒数。
no setter
isNegative bool
Duration 是否为负数。
no setter
runtimeType Type
表示对象运行时类型的表示。
no setterinherited

方法

abs() Duration
创建一个新的表示此 Duration 的绝对长度的 Duration
compareTo(Duration other) int
将此 Durationother 进行比较,如果值相等则返回零。
override
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
inherited
toString() String
返回此 Duration 的字符串表示。
override

运算符

operator *(num factor) Duration
将此 Duration 乘以给定的 factor 并返回新的 Duration 对象。
operator +(Duration other) Duration
将此持续时间与其他值相加,并返回作为新持续时间对象的总和。
运算符 -(Duration other) Duration
从此持续时间中减去 other,并返回作为新持续时间对象之差。
运算符 <(Duration other) bool
判断此 Duration 是否比 other 短。
运算符 <=(Duration other) bool
判断此 Duration 是否比 other 短或相等。
运算符 ==(Object other) bool
判断此 Duration 是否与 other 的长度相同。
override
运算符 >(Duration other) bool
判断此 Duration 是否比 other 长。
运算符 >=(Duration other) bool
判断此 Duration 是否比 other 长或相等。
运算符 -() Duration
创建一个与此 Duration 方向相反的新 Duration
运算符 ~/(int quotient) Duration
将此持续时间除以给定的 quotient,并返回作为新持续时间对象之截断结果。

常量

hoursPerDay → const int
每天的小时数。
microsecondsPerDay → const int
每天微秒数。
microsecondsPerHour → const int
每小时微秒数。
microsecondsPerMillisecond → const int
每毫秒微秒数。
microsecondsPerMinute → const int
每分钟微秒数。
microsecondsPerSecond → const int
每秒微秒数。
millisecondsPerDay → const int
每天毫秒数。
millisecondsPerHour → const int
每小时毫秒数。
millisecondsPerMinute → const int
每分钟毫秒数。
millisecondsPerSecond → const int
每秒毫秒数。
minutesPerDay → const int
每天分钟数。
minutesPerHour → const int
每小时分钟数。
secondsPerDay → const int
每天秒数。
secondsPerHour → const int
每小时秒数。
secondsPerMinute → const int
每分钟秒数。
zero → const Duration
一个空持续时间,表示零时间。