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
コメント