JavaのDateクラスの使い方を完全ガイド!初心者でもわかる日付操作
生徒
「Javaで現在の日付や時間を表示したいんですが、どうすればいいですか?」
先生
「それにはjava.utilパッケージにあるDateクラスを使う方法があります。」
生徒
「Dateクラスって具体的に何ができるんですか?」
先生
「現在日時の取得や、日時の表示、さらには過去や未来の時間と比較などもできますよ。では、基本から見ていきましょう!」
1. java.util.Dateクラスとは?
Dateクラスは、Javaで「日付」と「時刻」をまとめて扱うための基本的なクラスです。java.utilパッケージに含まれていて、現在時刻の取得や日時の表示、簡単な時間の比較などに使われます。イメージとしては、カレンダーの日付と時計の時刻をひとつの箱にまとめて入れておくようなものです。
Dateオブジェクトは「ある一瞬の時刻」をミリ秒単位で記録しています。new Date()と書いた瞬間の時刻が中に保存されるので、実行するタイミングが変われば、当然中身の日時も変わります。まずは「時刻をひとまとまりの値として扱うためのもの」と理解しておけば十分です。
import java.util.Date;
public class SimpleDateExample {
public static void main(String[] args) {
Date now = new Date(); // 今この瞬間の日時を表す
System.out.println("now = " + now); // 文字としてそのまま表示
}
}
このように、new Date()で現在の日時を取得し、そのままSystem.out.printlnで表示すると、Thu Sep 04 14:30:21 JST 2025のような形式で出力されます。細かい書式の調整は別の仕組みが必要ですが、「まずはこの形で現在日時を確認できる」と覚えておくと、ログ出力や動作確認に役立ちます。
JavaのバージョンによってはDateクラスの中の一部メソッドが非推奨になっていますが、日付と時刻のしくみを学ぶ入口としては今でもよく使われます。基礎的な役割や考え方をつかんでおくと、このあと学ぶ比較処理や新しい日付APIの理解もしやすくなります。
2. Dateクラスで現在の日時を取得する方法
実際にDateクラスを使ってみるとイメージがつかみやすくなります。Javaで現在の日時(今この瞬間の時刻)を知りたいときは、Dateクラスのインスタンスをひとつ作るだけです。特別な設定は不要で、「現在の日時をください」とお願いする感覚で、new Date()と書けばOKです。
流れとしては、①Dateクラスを読み込む、②new Date()で現在の日時を表すオブジェクトを作る、③System.out.printlnで画面(コンソール)に表示、という3ステップだけなので、プログラミング未経験の方でも真似しやすい書き方になっています。
import java.util.Date; // Dateクラスを使うための一行
public class CurrentDateExample {
public static void main(String[] args) {
Date now = new Date(); // 今この瞬間の日時を表す
System.out.println("現在の日時:" + now.toString()); // 文字に変換して表示
}
}
このサンプルを実行すると、プログラムを動かしたタイミングの日時がそのまま表示されます。
現在の日時:Thu Sep 04 14:30:21 JST 2025
英語の曜日や「JST」といった文字が出てきますが、これはコンピュータが内部的に持っている日付・時刻の情報を、読みやすい形に変換したものです。同じソースコードでも、実行した日や時間が変われば表示される日時も変わります。つまり、このコードは「そのときどきの現在日時を確認するための、いちばんシンプルな書き方」として覚えておくと便利です。
開発の現場でも「処理がいつ実行されたのかをログに残したい」「画面に今の時間を簡単に表示したい」といった用途で、まずはこのパターンからスタートすることが多いです。細かい書式の調整や時間の計算などは次のステップになりますので、ここでは「Dateクラスを使えば簡単に現在の日時を取り出せる」という感覚をつかんでおきましょう。
3. Dateクラスの主なメソッド
Dateクラスには、いくつかの便利なメソッドがあります。ただし、いくつかは古く、現在は非推奨になっているものもあります。ここでは使いやすいものを紹介します。
getTime():1970年1月1日からのミリ秒を取得before(Date date):指定した日時より前かを判定after(Date date):指定した日時より後かを判定equals(Date date):日時が同じかを判定
import java.util.Date;
public class DateCompareExample {
public static void main(String[] args) throws InterruptedException {
Date first = new Date();
Thread.sleep(1000); // 1秒待つ
Date second = new Date();
System.out.println("first.before(second): " + first.before(second));
System.out.println("first.after(second): " + first.after(second));
}
}
first.before(second): true
first.after(second): false
4. DateのgetTimeでミリ秒を取得する
getTime()メソッドは、エポック(1970年1月1日午前0時)からの経過ミリ秒数を返します。これを使うと、タイムスタンプとして日時を扱えます。
import java.util.Date;
public class TimeStampExample {
public static void main(String[] args) {
Date now = new Date();
long timestamp = now.getTime();
System.out.println("タイムスタンプ:" + timestamp);
}
}
タイムスタンプ:1756980621123
この値を使えば、データベースへの保存や、時系列データのソートなどにも応用できます。
5. Dateのbefore・afterメソッドで日付比較
beforeとafterメソッドは、他のDateオブジェクトと比較して「前」か「後」かを判定するのに使います。例えばログイン履歴や更新日時の比較に活用できます。
Date loginTime = new Date();
Thread.sleep(2000);
Date currentTime = new Date();
if (loginTime.before(currentTime)) {
System.out.println("ログインは現在より前です。");
}
ログインは現在より前です。
6. Dateクラスの代わりに使われる新しい日付API
Java 8以降では、java.timeパッケージが導入され、LocalDateやLocalDateTimeなど、より安全で直感的なクラスが使えるようになりました。
ですが、古いライブラリやシステムではDateがまだ使われていることもあるため、知っておくことは重要です。
import java.time.LocalDateTime;
public class ModernDateExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
System.out.println("現在日時(モダンAPI):" + now);
}
}
7. java.util.Dateをjava.timeに変換する方法
旧APIと新APIを併用する場面では、変換が必要になることもあります。DateからLocalDateTimeへ変換するには、次のようにします。
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class DateConversionExample {
public static void main(String[] args) {
Date oldDate = new Date();
LocalDateTime newDate = oldDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
System.out.println("変換後の日時:" + newDate);
}
}
8. JavaのDateクラスはいつ使うべき?
現在ではjava.timeパッケージの方が推奨されていますが、Dateクラスは次のような場面で使われます。
- 古いライブラリやAPIとの連携
- ログ出力やデバッグ時の簡易的な時間表示
- Java入門者が時間の概念を学ぶ際の最初の一歩
Javaの学習を始めたばかりの方にとって、Dateクラスはシンプルでわかりやすいので、入門としてはおすすめです。
まとめ
JavaのDateクラスは、現在の日付と時刻の取得、日時の比較、タイムスタンプの生成など、日付操作の基礎を身につけるために非常に役立つクラスです。とくに初心者にとって、オブジェクトとして「日付」を扱う感覚を理解するための第一歩として重要で、ログ管理や簡易的な時間処理にも使われています。近年ではjava.timeパッケージが主流になっているものの、既存のシステムや古いライブラリではDateクラスが多く使用されているため、その動作や特徴を知っておくことは長期的にも大きなメリットとなります。
また、getTime()を用いたミリ秒の取得、beforeやafterによる日時比較など、実務でも基本となる処理が多く含まれているため、理解しておくと幅広い場面で応用できます。さらに、Java8以降のモダンAPIであるLocalDateTimeやZoneIdと併用する機会も増えており、Dateから新APIへの変換方法を知っておくことでより柔軟な日付処理が可能になります。
下記では学んだ内容を振り返りながら、簡単なサンプルコードとともに再確認できるようまとめています。繰り返し読み返すことで、Javaの日付処理をより深く理解できるようになります。
サンプルプログラムで理解するDateクラスの基本
ここでは、Dateクラスの使い方を整理するために、記事内と同じようなコード例を用いて具体的に動作を確認します。
import java.util.Date;
import java.time.LocalDateTime;
import java.time.ZoneId;
public class SummaryDateExample {
public static void main(String[] args) throws InterruptedException {
Date now = new Date();
System.out.println("現在の日時:" + now);
long time = now.getTime();
System.out.println("ミリ秒:" + time);
Thread.sleep(1500);
Date later = new Date();
System.out.println("比較結果:" + now.before(later));
LocalDateTime converted =
now.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("変換後:" + converted);
}
}
Dateクラスとjava.timeの組み合わせによって、開発の幅が広がることがわかります。特にタイムゾーンを明示して変換する方法は、国際的なアプリケーションでも重要な考え方となり、Dateクラスの理解が新しいAPIの理解にもつながります。
生徒
「今日の学習で、Dateクラスがどんな場面で使われているのかよく分かりました!」
先生
「そうですね。特に基本的な日時取得や比較は今でも多くのシステムで使われていますよ。」
生徒
「beforeやafterが自然な感覚で使えるのが嬉しいです。あと、ミリ秒の取得も便利ですね。」
先生
「そのとおり。ミリ秒はログ管理や処理時間の計測にも役立ちます。さらに新しい日付APIへの変換も覚えておけば、より柔軟に開発できます。」
生徒
「Dateクラスは古いと聞いていましたが、完全に不要になるわけではないんですね。」
先生
「その通りです。レガシーなシステムにも触れられるように、しっかり理解しておくと強みになりますよ。」
生徒
「今日のまとめのおかげで、より深く理解できました!ありがとうございます。」
先生
「またいつでも質問してくださいね。次はjava.time APIも詳しく学んでいきましょう。」