java.util.Date
Dateクラスは日時を表す基本的なクラスで、時間をミリ秒の精度で表す事ができます。
かつてはDateクラスで年月日などを解釈する機能を持っていましたが、現在はそれらの機能はCalendarクラスを使用することになっています。
Dateクラスで持つlong型の値はエポック(基準時)からの経過ミリ秒です。
エポックとは「1970 年 1 月 1 日 00:00:00 GMT」を表し上限があります。
しかし、longの上限である2~63-1をDateで表現すると西暦3億年頃になる為、実運用上では上限値はないと言って良いでしょう。
Dateクラスにはコンストラクタが幾つか定義されていますが、現在(JDK1.4時点)はほとんどが非推奨となっており、使用できるのは次の2つです。
コンストラクタ | 概要 |
---|---|
Date() | Date オブジェクトを割り当て、初期化します。 |
Date(long date) | Date オブジェクトを割り当て、初期化します。 |
2つ目のコンストラクタはエポックからの経過時間(ミリ秒)を初期値としてインスタンスを作ります。
デフォルトのコンストラクタでは、実行時のシステム時間からエポックからの経過時間を計算し初期値としてインスタンスが作られます。
Dateクラスの主要メソッドを以下に示します。
戻り値 | メソッド | 概要 |
---|---|---|
long | getTime() | Date オブジェクトで表される、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数を返します。 |
void | setTime(long time) | Date オブジェクトを、1970 年 1 月 1 日 00:00:00 GMT から time ミリ秒の時点を表すように設定します。 |
boolean | after(Date when) | この日付が、指定された日付より後にあるかどうかを判定します。 |
boolean | before(Date when) | この日付が、指定された日付より前にあるかどうかを判定します。 |
その他のメソッドに関してはJavaDocを参照してください。
setTime/getTime
Dateクラスのオブジェクト(インスタンス)の持つエポックからのミリ秒は、long型である為に計算しやすく日付計算などでよく使用されます。
このlong値はしばしば「時間」として扱われ、次のようなアクセサで取得/設定できます。
もし、現在時刻から3時間40分後のDateクラスのインスタンスを作りたいならば次のようになるでしょう。
Date date = new Date(); long time = date.getTime(); time = time + 3 * 1000 * 60 * 60 + 40 * 1000 * 60; date.setTime(time);
timeがミリ秒であることに気をつけてください。