8.2. 日時の表現
日時データを整形して出力する場合には、java.text.DateFormatを使用します。DateFormatの取得には、そのクラスメソッドである「getInstance」「getDateInstance」「getDateTimeInstance」「getTimeInstance」のいずれかか、サブクラスであるjava.text.SimpleDateFormatクラスから作成します。
DateFormat format = DateFormat.getDateInstance(DateFormat.LONG); DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
DateFormatから作成する場合には、クラス変数でフォーマットを指定します。「LONG」「MEDIUM」「SHORT」の3種類用意されており、そのいずれかを指定します。省略した場合には、SHORTが適用されます。
細かく書式を指定したい場合にはSimpleDateFormatを使用します。書式の指定には、パターン文字を使用して定義します。主要なパターン文字を以下に示します。
パターン文字 |
表示するフィールド |
表示形式 |
---|---|---|
G | 紀元 | テキスト形式で表示します。 |
y | 年 | 3文字以下の場合は下2桁を表示します。4文字以上の場合は、数値形式で表示します。 |
M | 月 | 3文字以上の場合はテキスト形式で表示します。2文字以下の場合は、数値形式で表示します。 |
W | 月における週 | 数値形式で表示します。 |
d | 月における日 | 数値形式で表示します。 |
E | 曜日 | テキスト形式で表示します。 |
a | 午前/午後 | テキスト形式で表示します。 |
H | 時間 | 数値形式で、24時制(0〜23)で表示します。 |
k | 時間 | 数値形式で、24時制(1〜24)で表示します。 |
K | 時間 | 数値形式で、12時制(0〜11)で表示します。 |
h | 時間 | 数値形式で、12時制(1〜12)で表示します。 |
m | 分 | 数値形式で表示します。 |
s | 秒 | 数値形式で表示します。 |
テキスト形式:4文字以上の場合はフルテキスト、3文字以下の場合は省略形がある場合にはその形式で表示します。
数値形式:文字数で最小桁数を指示。足りない場合には0を補完して表示します。
パターン文字以外の文字は、そのまま表示されます。パターン文字で使われている文字をそのまま出力したい場合には、「'」で囲みます。
日時データを整形して出力する場合には、「format」メソッドを使用しますがそれの引数は「java.util.Date」です。Calendarからは「getTime」メソッドでDateが取得できますので、それを用いて以下のようにする事ができます。
Calendar cal = Calendar.getInstance(); String text = format.format(cal.getTime());
逆に整形された文字列を解釈して、Dateを作成する事も可能です。その場合には「parse」メソッドを使用します。
String sample = "1900-06-23"; Date date = format.parse(sample);
parseメソッドは文字列の書式が解釈できないものである場合、java.text.ParseExceptionをスローします。
(実習課題3)
引数で指定した日が、その月の何週目の何曜日か表示するコンソールプログラムを作成しなさい。