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
另请参阅
- 实现类型
构造函数
属性
- 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
方法
运算符
-
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
- 一个空持续时间,表示零时间。