日時はDateとCalendarが基本!
数字や文字といった値と違い、日時の値というのはちょっと特殊です。単純な数字では表せないですし、テキストとして表現したとしても、そこから必要な値を取り出したり、日時の計算をしたりするのは大変そうですね。
Javaでは、日時は専用のクラスを使ってあらわすようになっています。これは、実は1つのクラスではありません。日時に関するいくつかのクラスがあって、それらを利用して日時を表現したり、日時の計算をしたりします。この日時の基本となるクラスには、以下のようなものがあります。
Date――これが、日時の値のもっとも基本となるものです。内部に「エポックからの UTC ミリ秒値」と呼ばれる値を持っています。これは、基準日時(通常は、1970年の元旦午前0時)からの経過ミリ秒数を示す数値です。これをもとにして指定の日時を表現するようになっています。ただし、Dateは、単に日時を表現するだけの機能しかもっていないため、今ではこれ単体で日時を扱うことはあまりありません。
Calendar――カレンダー(暦)のクラスです。日時というのは、実は普遍ではありません。指定した時刻は世界共通としても、それをどのように表現するかは、使用する暦によって違ってきます。また同じ時刻でも、それがどこの国(地域)かによって変わってきます。こうした「地域による違い、暦による違い」を含めて正しく日時を扱えるようにしたのがCalendarクラスです。ただし、これはその土台となるもので、実際にはこれを継承して具体的な暦を扱うためのクラスが利用されます。
GregorianCalendar――これはグレゴリオ暦を扱うクラスで、Calendarクラスのサブクラスです。グレゴリオ暦というのは、現在、欧米を中心に世界の多くの国や地域で使われている暦ですね。この暦にしたがって日時を表現するためのクラスがこれです。通常、特に理由がなければ、日時の値にはこのクラスが用いられます。
これらのクラスは、java.utilというパッケージにまとめられています。ですから、これらを利用する際には、このパッケージ内のクラスをimportしておく必要があります。では、実際に簡単なサンプルをあげておきましょう。ここでは、現在の日時を調べて表示してみます。
package jp.allabout;
import java.util.*; // パッケージをimportしておく
public class SampleApp {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
}
}