フォーマットを指定する
さて、日時の値そのものの基本的な扱いはだいたいわかってきました。最後に、「日時の値を、あらかじめ指定した形式でフォーマットする」ということについて触れておきましょう。
日時の値は、そのままだと「Wed Feb 11 00:00:00 JST 2009」というような形式で表示されます。が、これではちょっと見づらいですね。もっとわかりやすい形で表示したいものです。これには、DateFormatというクラスが用意されています。これは日時をフォーマットするための機能を提供するものです。ただし、このクラス自体はベースとなる抽象クラスで、一般的にははこれを継承した「SimpleDateFormat」というクラスを利用します。
これは、表示フォーマットをテキストで指定し、それに従った形でDateをフォーマットすることができます。これも、簡単な例を挙げておきましょう。
package jp.allabout;
import java.util.*;
import java.text.*;
public class SampleApp {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2009);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.DATE, 11);
SimpleDateFormat format = new SimpleDateFormat("y年M月d日(E)");
System.out.println(format.format(cal.getTime()));
}
}
プログラムを実行すると、今日の日付をフォーマットして表示する。 |
ここでは、「○○年○月○日(○)」といった形式で日付をフォーマットし、表示しています。まず、SimpleDateFormatインスタンスを用意しましょう。
SimpleDateFormat format = new SimpleDateFormat("y年M月d日(E)");
引数に、フォーマットの形式をテキストで指定します。フォーマット形式は、「パターン文字」と呼ばれる記号を組み合わせて作成します。これはSimpleDateFormatに用意されており、それを使って日時の個々の値を指定できます。
実際のフォーマットは、「format」メソッドで行います。これは引数に指定ししたDateインスタンスの日時をフォーマットし、Stringとして返します。パターンの作成と、formatの使い方さえわかれば、自由に日時の値をフォーマットして表示できるようになりますね。
※パターン作成用に用意されているパターン文字
G 紀元
y 年
M 月
w 年における週
W 月における週
D 年における日
d 月における日
F 月における曜日
E 曜日
a 午前/午後
H 一日における時 (0 ~ 23)
k 一日における時 (1 ~ 24)
K 午前/午後の時 (0 ~ 11)
h 午前/午後の時 (1 ~ 12)
m 分
s 秒
S ミリ秒
z タイムゾーン(一般的なタイムゾーン)
Z タイムゾーン(RFC 822 タイムゾーン)