DateFormatでフォーマット!
実際にgetTimeしたものを出力すると、表示が英語になってしまったかも知れません。printlnでの出力は、そのインスタンスのtoStringされた値がそのまま書き出されます。このため、日本語の環境でも英語で表示されてしまったりするのです。日本語で、更にいえば「開発者が思った通りのフォーマットで」日時の値を表示するにはどうすればよいのでしょう。こうした場合には、java.textパッケージにあるDateFormatというクラスを利用するのが基本です。これは文字通り日時の値を決まった表示形式にフォーマットするためのクラスです。これも実際には、DateFormatを継承して作られたSimpleDateFormatというクラスを利用します。
import java.util.*;
import java.text.*;
public class Sample {
public static void main(String[] args){
GregorianCalendar cal1 = new GregorianCalendar();
SimpleDateFormat fmt1 = new SimpleDateFormat(
"yyyy年 M月 d日 (E)");
System.out.println(fmt1.format(cal1.getTime()));
}
}
リストを実行すると、DateのString値が表示される。 |
これが、SimpleDateFormatを使って現在の日付を出力するようにしたサンプルです。SimpleDateFormatは、newする際に引数にフォーマットの形式をStringで指定することができます。こうすることで、自分で思い通りの表示フォーマットを用意できるわけです。そして、Dateインスタンスを引数に指定してformatメソッドを呼び出せば、そのDateの日時をフォーマットしたStringが得られるのですね。
GregorianCalendarとSimpleDateFormat、どちらも長ったらしい名前で「どうも難しそうだ」と敬遠しているビギナーも多いことでしょう。が、この2つは日時の値を表示するためには必須のものです。基本的な使い方だけでも頭に入れておきたいですね。
Javadocリファレンス
GregorianCalendarクラスSimpleDateFormatクラス