どうも、ちょげ(@chogetarou)です。
2つの日付を比較する方法を紹介します。
方法

2つの日付を比較するには、次の4つのメソッドのいずれかを使います。
- compareToメソッド:2つの日付を比較した結果を返す
- isAtSameMomentAsメソッド:2つの日付が同じかどうかを返す
- isBeforeメソッド:呼び出し側がメソッドの引数よりも前の日付か
- isAfterメソッド:呼び出し側がメソッドの引数よりも後の日付か
compareTo
compareToメソッドは、2つの日付を比較し、その結果を返すメソッドです。
使い方としては、まず、片方の日付からcompareToメソッドを呼び出します。
そして、comapreToメソッドの引数にもう片方の日付を指定します。
dt1.compareTo(dt2) //dt1とdt2を比較
compareToメソッドは、比較した結果に応じた数値を返します。
使用例
void main() {
var dt1 = DateTime.parse("2022-01-01 00:00:00");
var dt2 = DateTime.parse("2022-02-01 00:47:00");
var dt3 = DateTime.parse("2022-03-01 00:47:00");
print(dt1.compareTo(dt1)); //0
print(dt1.compareTo(dt2)); //-1
print(dt3.compareTo(dt2)); //1
}
isAtSameMomentAs
isAtSameMomentAsメソッドは、2つの日付が同じかどうかを比較するメソッドです。
比較する片方の日付からisAtSameMomentAsメソッドを呼び出します。
そして、isAtSameMomentAsメソッドの引数にもう片方の日付を指定します。
dt1.isAtSameMomentAs(dt2) //dt1とdt2が同じ日付か
isAtSameMomentAsメソッドは、同じ日付ならばtrue、そうでなければfalseを返します。
使用例
void main() {
var dt1 = DateTime.parse("2022-01-01 00:00:00");
var dt2 = DateTime.parse("2022-02-01 00:47:00");
print(dt1.isAtSameMomentAs(dt2)); //false
print(dt1.isAtSameMomentAs(dt1)); //true
}
isBefore
isBeforeメソッドは、メソッドを呼び出した日付が引数の日付より前かどうかを比較するメソッドです。
比較する片方の日付からisBeforeメソッドを呼び出します。
そして、isBeforeメソッドの引数にもう片方の日付を指定します。
dt1.isBefore(dt2) //dt1がdt2よりも前かどうか
isBeforeメソッドは、メソッドを呼び出した日付が前ならば「true」、そうでなければ「false」を返します。
使用例
void main() {
var dt1 = DateTime.parse("2022-01-01 00:00:00");
var dt2 = DateTime.parse("2022-02-01 00:47:00");
var dt3 = DateTime.parse("2022-03-01 00:47:00");
print(dt3.isBefore(dt2)); //false
print(dt1.isBefore(dt2)); //true
print(dt1.isAtSameMomentAs(dt1)); //true
}
isAfter
isAfterメソッドは、メソッドを呼び出した日付が引数の日付より後かどうかを比較するメソッドです。
比較する片方の日付からisAfterメソッドを呼び出します。
そして、isAfterメソッドの引数にもう片方の日付を指定します。
dt1.isAfter(dt2) //dt1がdt2よりも後かどうか
isAfterメソッドは、メソッドを呼び出した日付が後ならば「true」、そうでなければ「false」を返します。
使用例
void main() {
var dt1 = DateTime.parse("2022-01-01 00:00:00");
var dt2 = DateTime.parse("2022-02-01 00:47:00");
var dt3 = DateTime.parse("2022-03-01 00:47:00");
print(dt3.isAfter(dt2)); //true
print(dt1.isAfter(dt2)); //false
print(dt1.isAfter(dt1)); //false
}
まとめ
2つの日付を比較するには、次の4つのメソッドを使います。
- compareToメソッド:2つの日付を比較した結果を返す
- isAtSameMomentAsメソッド:2つの日付が同じかどうかを返す
- isBeforeメソッド:呼び出し側がメソッドの引数よりも前の日付か
- isAfterメソッド:呼び出し側がメソッドの引数よりも後の日付か
コメント