[Dart]日付を比較するには?

Dart

どうも、ちょげ(@chogetarou)です。

2つの日付を比較する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

2つの日付を比較するには、次の4つのメソッドのいずれかを使います。

  • compareToメソッド:2つの日付を比較した結果を返す
  • isAtSameMomentAsメソッド:2つの日付が同じかどうかを返す
  • isBeforeメソッド:呼び出し側がメソッドの引数よりも前の日付か
  • isAfterメソッド:呼び出し側がメソッドの引数よりも後の日付か

compareTo

compareToメソッドは、2つの日付を比較し、その結果を返すメソッドです。

使い方としては、まず、片方の日付からcompareToメソッドを呼び出します。

そして、comapreToメソッドの引数にもう片方の日付を指定します。

dt1.compareTo(dt2) //dt1とdt2を比較

compareToメソッドは、比較した結果に応じた数値を返します。

comapreToメソッドで返す値は、次の3つです。

  • −1:呼び出した方が前の日付
  • 0:同じ日付
  • 1:呼び出した方が後の日付

使用例

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メソッド:呼び出し側がメソッドの引数よりも後の日付か

コメント

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