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

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

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

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

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

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

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

2023-03-14 22:17:07.913321
2023-03-14 22:17:07.913320
true

同じ時刻の場合。

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

同じ時刻はfalseを返す。

2023-03-14 22:23:49.291196
2023-03-14 22:23:49.291196
false

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

void main() {
  final current = DateTime.now();
  // 現在時刻
  print(current);
  // 同じ時刻
  final after = current.add(Duration(microseconds: 1));
  print(after);
  // 比較
  print(after.isBefore(current));
}

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

2023-03-14 22:27:55.846393
2023-03-14 22:27:55.846394
false

最後はUTCと比較。
現在時刻をtoUTC()メソッドでUTCに変換。
6行目でローカル時間に戻した後、subtract()メソッドで1マイクロ秒戻す。

void main() {
  final current = DateTime.now().toUtc();
  // 現在時刻がUTC
  print(current);
  // ローカル時間に戻し、1マイクロ秒マイナス
  final after = current.toLocal().subtract(Duration(microseconds: 1));
  print(after);
  // 比較
  print(after.isBefore(current));
}

1行目の末尾に”Z”が付き、UTCである事が分かる。
ローカルタイムはUTCプラス9時間表示だが、結果はtrueを返す。

2023-03-14 13:37:46.649897Z
2023-03-14 22:37:46.649896
true

コメント

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