時間関連クラスを理解する

Java には,日時を扱うクラスがあります.素人でよくありがちなのは,日時を扱うするプログラムにおいて,それを文字列(String)であらわしてしまうケー スです.まあ,日時を表示することだけを考えたらそれでもいいかもしれません.しかし,日時を比較したり,曜日を求めたり足したり引いたりすることを考え ると,このアプロー チでは破綻します.そこで,日時を扱うクラスの登場となるわけです.主に次のクラスを用います.

現在の時間の取得

//ミリ秒取得 long now = System.currentTimeMillis(); // Date型での現在時刻取得 Date now = new Date(); // Calendar型での現在時刻取得 Calendar now = Calendar.getInstance();

Dateクラス

日時のデータを管理するのはDateクラスです.これに日時を入れておけば,比較とか差分をとることができます.で,これに時間を 設定するためのクラスがほかのクラスたちです.

GregorianCalendarクラス(Calendarク ラス)

日時を指定したりするに使います.

使い方としては,GregorianCalendarクラスで,日時を設定しdateクラスに格納しま す.

例)

Calendar c = new GregorianCalendar(2004,9,14)

Date d = c.getTime();

上記のようにすれば,d に指定した時間が格納されます.

注意!!

上の例を見ると,2004年の9月14日を指定したように見えますよね?でも,実はそうなりません.この場合,Dateクラスに は,2004年10月14日が入ってます.どういうことでしょう?

実は,Javaの中では,0:1月,1:2月,2:3月....というふうに0から月が始まっています.よって,月にはずれが生じ ますので,この点は注意しましょう!

SimpleDateFormatクラスでいろいろな時間の表現に対応する.

日常において、日時などの表記方法は多様です.年月日の表示順序や何を表示するのかなど、状況によってさまざまです.そのような決められた表記パターンに 対応するのが、SimpleDateFormatクラスです.ここでは、2006/12/3のような表記になっているデータをDateクラスに格納し、 Dateクラスから同じ形式で出力する方法について書きます.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

try {

Date date =sdf.parse("2006/12/3");//登録日

System.out.println(sdf.format(date));

} catch (ParseException ex) {

ex.printStackTrace();

}

上記のプログラムを実行すると、"2006/12/3"という形式の文字列を"年/月/日"というフォー マットとしてDateクラスに格納できます.そして、どうような形式で出力できます.見てわかるように、SimpleDateFormatのインスタンス 生成時に、あらかじめフォーマットを設定しておいて、それを使ってDateクラスを扱うのがポイントです.