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