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所跨越的全部天数。没有设置器
- inHours → int
- 此Duration所跨越的全部小时数。没有设置器
- inMicroseconds → int
- 此Duration所跨越的全部微秒数。没有设置器
- inMilliseconds → int
- 此Duration所跨越的全部毫秒数。没有设置器
- inMinutes → int
- 此Duration所跨越的全部分钟数。没有设置器
- inSeconds → int
- 此Duration所跨越的全部秒数。没有设置器
- isNegative → bool
- 此Duration是否为负数。没有设置器
- runtimeType → Type
- 对象运行类型的表示。没有设置器继承
方法
运算符
-
operator *;
- 将Duration乘以指定的
因子
,并返回作为新的Duration对象的结果。- operator +(
Duration other) → Duration - 将此Duration与
other
相加,并返回和的新的Duration对象。- operator -(
Duration other) → Duration - 从当前Duration对象减去
other
,并返回差值作为新的Duration对象。- 操作符 <(
Duration other ) → bool - 将Duration乘以指定的
- 当前
Duration
是否比other
短。 -
操作符 <=(
Duration other ) → bool - 当前
Duration
是否比或等于other
短。 -
操作符 ==(
Object other ) → bool - 当前
Duration
是否与other
长度相同。覆盖 -
操作符 >(
Duration other ) → bool - 当前
Duration
是否比other
长。 -
操作符 >=(
Duration other ) → bool - 当前
Duration
是否比或等于other
长。 -
操作符 unary-(
) → Duration - 创建一个新的
Duration
对象,其方向与当前Duration
相反。 -
操作符 ~/(
int quotient ) → Duration - 将当前Duration除以指定的
quotient
,并返回截断结果作为新的Duration对象。
常量
- 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
- 一个空的Duration对象,表示零时间。