Javaで日付を扱う型は色々とあるが、もっとも有名なもののひとつがDateクラスだろう。
このページではDateクラスの使い方についてまとめている。便利なクラスなので、ぜひ使い方をマスターしていただければと思う。
目次
JavaのDateクラス
最新のJava8では新しい日付クラスが登場し、これから説明するDateクラスに代わるクラスが推奨されるが、このページではDateクラスについて見ていく。
Dateは日付を扱うクラス
Dateクラスはjava.utilパッケージにある日付を扱うクラスだ。今日の日付を取得したい時や日付の比較、特定の日付と比較対象の日付が過去か未来かなどの判定を行う機能を提供している。
Dateクラスには特定の日時をセットして日付情報を作るメソッドも用意されているが、現在は非推奨となっている。 特定の日時のセットや、日時の計算を行いたい場合は、同じくjava.utilパッケージに存在するCalendarクラスを使用するようにしよう。
Dateクラスのオブジェクトの作り方
Dateクラスのオブジェクトの生成方法はこうだ。
new Date()
戻り値の型 |
public Date |
内容 |
Dateクラスのオブジェクトを生成し、その生成された時刻を、もっとも近いミリ秒単位で表す。 |
new Date(long date)
戻り値の型 |
public Date |
内容 |
オブジェクトを生成し、引数で渡されたミリ数秒で初期化する。 引数 date - 1970 年 1 月 1 日 00:00:00 GMT から経過したミリ秒数 |
Dateクラスは世界標準時エポック(1970/1/1)からのミリ秒で時間を表す。new演算子を使用して引数なしのオブジェクトを生成すると、現在時刻のDateオブジェクトが生成される。
- GMTは世界標準時(Greenwich Mean Time)の略称だ
- ミリ秒 → 1秒の1000分の1
Dateクラスのメソッド
それではDateクラスのメソッドをご紹介していこう。
とりあえずの使い方が知りたいという方は、下に載せているサンプルコードを見ていただくのが手っ取り早いだろう。
時間を取得するDateオブジェクト.getTime()
戻り値の型 |
Public long |
内容 |
Dateオブジェクトが1970 年 1 月 1 日 00:00:00 GMT から経過したミリ秒数を返す。 戻り値: 1970 年 1 月 1 日 00:00:00 GMT から経過したミリ秒数
|
時間を設定するDateオブジェクト.setTime(long time)
戻り値の型 |
public void |
内容 |
1970 年 1 月 1 日 00:00:00 GMT から time ミリ秒経過した時点を設定する。 引数: time - ミリ秒数 |
前の日付かを判定するDateオブジェクト.before(Date when)
戻り値の型 |
Public boolean |
内容 |
この日付が、指定された日付より前(過去)にあるかどうかを判定する。 引数: when - 日付 戻り値: Date オブジェクトが表す時点が 引数when の表す時点より早い場合だけ true、そうでない場合は false 例外: - when が null の場合の、エラー(NullPointerException)が発生する。 |
後の日付かを判定するDateオブジェクト.after(Date when)
戻り値の型 |
Public boolean |
内容 |
この日付が、指定された日付より後(未来)にあるかどうかを判定する。 引数: when - 日付 戻り値: Date オブジェクトが表す時点が 引数when の表す時点より遅い場合だけ true、そうでない場合は false 例外: - when が null の場合の、エラー(NullPointerException)が発生する。 |
同じ日付かどうかを確認するDateオブジェクト.equals(Object obj)
戻り値の型 |
Public boolean |
内容 |
2 つの日付が等しいかどうかを比較する。引数が null ではなく、かつ、このオブジェクトとミリ秒まで同じ時点を表す Date オブジェクトであれば、true を返す。 引数: obj - 比較対象のオブジェクト 戻り値: オブジェクトが同じである場合は true、そうでない場合は false |
日付を比較するDateオブジェクト.compareTo(Date anotherDate)
戻り値の型 |
Public int |
内容 |
順序付けのために 2 つの Date を比較する。 引数: anotherDate - 比較対象の Date 戻り値: 引数 anotherDate がこの Date と等しい場合は値 0。この Date が引数 anotherDate より前の場合は 0 より小さい値。この Date が引数 anotherDate より後の場合は 0 より大きい値 例外: anotherDate が null の場合、エラー(NullPointerException)が発生する。 |
Dateクラスのサンプルコード
それではDateクラスのサンプルコードを確認してみよう。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class DateSample { public static void main(String[] args) { Date date1 = new Date();//[1] Date date2 = new Date(date1.getTime());//[2] System.out.println("date1の情報:" + date1);//[3] System.out.println("date1とdate2は同じかどうか:" + date1.compareTo(date2)); //[4] Calendar gantan = Calendar.getInstance(); gantan.set(2016, 0, 1); Date dateGantan = gantan.getTime();//[5] System.out.println("date1は2016年元旦より未来か :" + dateGantan.after(date1));//[6] System.out.println("date1は2016年元旦より過去か :" + dateGantan.before(date1));//[7] } } |
実行結果
1 2 3 4 |
date1の情報:Sat Sep 03 12:48:52 JST 2016 date1とdate2は同じかどうか:0 date1は2016年元旦より未来か :false date1は2016年元旦より過去か :true |
サンプルコードの説明
- [1] Dateオブジェクトを生成し、実行時の日時情報を代入。
- [2] date1からgetTime()メソッドで取得した1970年から実行時までの経過ミリ秒をパラメータとして渡して、オブジェクトを生成。
- [3] date1の情報を表示。(内部的にtoString()を実行し情報を文字列で表示する)
- [4] date1とdate2が同じ日時情報を持ったオブジェクトかどうかを比較。
- [5] Calendar を使って2016年1月1日の日時情報を作成し、DateオブジェクトdateGantanに変換。
- [6] 実行時date1がdateGantanより未来かを判定。
- [7] 実行時date1がdateGantanより過去かを判定。
まとめ
このページではJavaのDateクラスについてまとめてきた。
徐々の使われにくくなっていくクラスだが、それでも既存コードにはたくさん登場するし、Javaの下位互換性を考えれば使えなくなることもない。
サンプルコードを実際に打って、確認していただければと思う。