libro
www.tuyano.com
初心者のためのJava SEプログラミング入門

日時の値とカレンダー (5/6)

作成:2012-07-22 19:45
更新:2012-07-22 19:56

■日時フォーマットとDateFormat

ここまで、日時の表示は、すべてDateインスタンスをそのままprintlnして行なっていました。が、これだとちょっと表示が見づらいですね。月や曜日は英語ですし、私達に見慣れたフォーマットではないのでわかりにくい感じがします。

日時の値をわかりやすい形式にフォーマットするには、java.textパッケージにある「DateFormat」というクラスを使います。これが、日時をフォーマットするための機能を提供するためのものです。これは以下のような形でインスタンスを取得します。
DateFormat 変数 = DateFormat.getInstance();
DateFormat 変数 = DateFormat.getDateInstance();
DateFormat 変数 = DateFormat.getTimeInstance();
getInstanceは、日時をフォーマットするためのもので、getDateInstancegetTimeInstanceはそれぞれ日付・時刻をフォーマットするものを作成します。こうして作成したDateFormatインスタンスから「format」メソッドを呼び出すことで、日時をフォーマットしたテキストを得ることができます。
String 変数 = 《DateFormat》.format(《Date》);
このDateFormatで得られるのは「2012/01/03 04:50」というようなシンプルなフォーマットのテキストです。単に日付を何かに表示するというだけならこれで十分でしょう。

自分なりにフォーマットの形式をカスタマイズしたい、という場合は、DateFormatのサブクラスである「SimpleDateFormat」を利用するのがよいでしょう。これは以下のような形でインスタンスを作成します。
SimpleDateFormat 変数 = new SimpleDateFormat( パターン );
引数には、フォーマットの形式を示すパターンの値をStringで用意します。後は、DateFormatと同様にformatでテキストを取り出します。問題はフォーマットのパターンをどうやって作るかでしょう。

フォーマットのパターンは、あらかじめ用意されている特別な記号を使って組み立てます。用意されているのは以下のような記号です。

G    紀元
y    年
M    月
w    年における週
W    月における週
D    年における日
d    月における日
F    月における曜日
E    曜日
a    午前/午後
H    1日における時(0~23)
k    1日における時(1~24)
K    午前/午後の時(0~11)
h    午前/午後の時(1~12)
m    分
s    秒
S    ミリ秒
z    タイムゾーン(一般表現)
Z    タイムゾーン(RFC822形式)

これらの記号を組み合わせてパターンのテキストを作ります。簡単な例を下にあげておきましょう。ここでは、"yyyy年 M月 d日(E)"というようにしてパターンを用意してあります。これで、「2012年 7月 22日(日)」というような形式で日時が表示されるようになります。年の値は、このようにyyyyと4つ並べると4桁表記に、yyとすると2桁表記になります。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

	public static void main(String[] args) {
		Calendar cal1 = Calendar.getInstance();
		SimpleDateFormat format = new SimpleDateFormat("yyyy年 M月 d日(E)");
		System.out.println(format.format(cal1.getTime()));
	}

※関連コンテンツ

「初心者のためのJava SEプログラミング入門」に戻る