【Java入門】Dateクラスで日付の比較(compareTo/before/after)

こんにちは!エンジニアの中沢です。

Javaには日付や時刻を取り扱うDateクラスCalendarクラスがあります。日時は比較して、どちらが先かどうかを判定することができます。この記事では、

Dateクラスとは?
現在日時を取得する方法を知りたい

という基本的な内容から、

  • 日付を比較する方法
  • 日付の比較の注意点

などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、日時の比較をするさまざまな使い方をわかりやすく解説します!

Dateクラスとは

Dateクラスとは年月日時間を扱うためのクラスです。このクラスを使えば、単純に現在の日付と時刻の取得といったシンプルなプログラムから、ストップウォッチやカウントダウン式タイマープログラムの開発ができるようになります。

更に普段To-Doリストアプリで、時刻になったら通知する機能もこのDateクラスで管理が可能です。

現在日時を取得する方法

ここでは、Dateクラスを使って現在日時を取得する方法を解説します。Dateクラスを使うには、「import java.util.Date」のインポート文が必要です。現在日時を取得する方法を次のプログラムで確認してみましょう。

実行結果:
このようにして、現在の日時を取得することができました。

日付を比較する方法

Dateクラスのbeforeメソッド

Dateクラスのbeforeメソッドは、指定された日付より前にあるかどうかを判定するために使用します。beforeメソッドの使い方を次のプログラムで確認してみましょう。

実行結果:

Dateクラスのafterメソッド

Dateクラスのafterメソッドは、指定された日付より後にあるかどうかを判定するために使用します。afterメソッドの使い方を次のプログラムで確認してみましょう。

実行結果:

DateクラスのcompareToメソッド

ここでは、compareToメソッドで比較する方法を解説します。compareToメソッドの戻り値は、次のようになります。

  • メソッドの呼び出し元の値が、引数と等しい場合は0
  • メソッドの呼び出し元の値が、引数より前の場合は-1
  • メソッドの呼び出し元の値が、引数より後の場合は1

compareToメソッドの使い方を次のプログラムで確認してみましょう。

実行結果:

このようにcompareToメソッドを使って日時を比較することができました。

CalenderクラスのcompareToメソッド

Dateクラスだけではなく、Calenderクラスでも同じように比較ができます。最近ではCalenderクラスを使うほうが主流ですので、こちらも覚えておきましょう。

実行結果:

CalenderクラスでもcompareToメソッドを使って比較できることが確認できました。compareToメソッドの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

【Java入門】compareToで大小を比較をする方法総まとめ(文字列/日付)
更新日 : 2019年4月23日

日付の比較の注意点

compareToメソッドで比較をする場合、ミリ秒単位まで同じ値を指定しないと、同じ日時と判定されないので、戻り値は「0」になりません。日付が同じでも、時刻が違えば、違う日時と判定します。

また、戻り値の「0」や「1」はインデックスではないので注意してください。

Dateクラスについてもっと詳しく知りたい方へ

Dateクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

【Java】Dateクラスで日付を扱う方法を5つのパターン別に解説
更新日 : 2019年6月14日

まとめ

いかがでしたか?今回は日時を比較する方法を解説しました。日時を比較するメソッドはいくつもあるので、うまく使い分けてくださいね。もし、日時を比較する方法を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

中沢 丈

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説