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所跨越的全部天数。
没有设置器
inHours int
Duration所跨越的全部小时数。
没有设置器
inMicroseconds int
Duration所跨越的全部微秒数。
没有设置器
inMilliseconds int
Duration所跨越的全部毫秒数。
没有设置器
inMinutes int
Duration所跨越的全部分钟数。
没有设置器
inSeconds int
Duration所跨越的全部秒数。
没有设置器
isNegative bool
Duration是否为负数。
没有设置器
runtimeType Type
对象运行类型的表示。
没有设置器继承

方法

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

运算符

operator *;

将Duration乘以指定的因子,并返回作为新的Duration对象的结果。
operator +(Duration other) Duration
将此Duration与other相加,并返回和的新的Duration对象。
operator -(Duration other) Duration
从当前Duration对象减去other,并返回差值作为新的Duration对象。
操作符 <(Duration other) bool
当前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对象,表示零时间。