Dart DateTimeクラスisAfter()メソッド

Dar言語StreamクラスtoSet()メソッドDart

Dart DateTimeクラスのisAfter()メソッドについてメモ書き。

日時のインスタンスを比較するisAfter()メソッド。
比較対象より時間が経過していればbool型の”true”を返す。
比較はローカルタイム、UTC関係なく行われる。

簡単なコードを書いて試してみる。
先ずは現在時刻と1マイクロ秒後の時刻で比較。add()メソッドで時間を追加。

void main() {
  final current = DateTime.now();
  // 現在時刻
  print(current);
  // 1マイクロ秒追加
  final after = current.add(Duration(microseconds: 1));
  print(after);
  // 現在時刻と比較
  print(after.isAfter(current));
}

実行結果。
現在時刻より後なのでtrueを返す。

2023-03-13 07:51:47.963203
2023-03-13 07:51:47.963204
true

次は現在時刻と1マイクロ秒前の時刻で比較。
subtract()メソッドを使うことで時間をマイナスできる。

void main() {
  final current = DateTime.now();
  // 現在時刻
  print(current);
  // 1マイクロ秒前
  final before = current.subtract(Duration(microseconds: 1));
  print(before);
  // 現在時刻と比較
  print(before.isAfter(current));
}

実行結果。
現在時刻より前なのでfalseを返す。

2023-03-14 07:16:00.468602
2023-03-14 07:16:00.468601
false

同じ時刻の場合。

void main() {
  final current = DateTime.now();
  // 現在時刻
  print(current);
  // 同じ時間
  final now = current;
  print(now);
  // 比較
  print(now.isAfter(current));
}

同じ時刻はfalseを返す。

2023-03-14 07:20:35.865520
2023-03-14 07:20:35.865520
false

最後はUTCと比較。
現在時刻をtoUTC()メソッドでUTCに変換し、add()メソッドで1マイクロ秒進める。

void main() {
  final current = DateTime.now();
  // 現在時刻
  print(current);
  // UTCに変換し、1マイクロ秒進める
  final utcAfter = current.toUtc().add(Duration(microseconds: 1));
  print(utcAfter);
  // 比較
  print(utcAfter.isAfter(current));
}

2行目の末尾に”Z”が付き、UTCである事が分かる。
UTCなのでマイナス9時間表示だが、結果はtrueを返す。

2023-03-14 07:28:36.753961
2023-03-13 22:28:36.753962Z
true

コメント

タイトルとURLをコピーしました