時間関連クラスを理解する
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クラスを扱うのがポイントです.