當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。