日時の値とカレンダー (5/6)
作成:2012-07-22 19:45
更新:2012-07-22 19:56
更新:2012-07-22 19:56
■日時フォーマットとDateFormat
ここまで、日時の表示は、すべてDateインスタンスをそのままprintlnして行なっていました。が、これだとちょっと表示が見づらいですね。月や曜日は英語ですし、私達に見慣れたフォーマットではないのでわかりにくい感じがします。
日時の値をわかりやすい形式にフォーマットするには、java.textパッケージにある「DateFormat」というクラスを使います。これが、日時をフォーマットするための機能を提供するためのものです。これは以下のような形でインスタンスを取得します。
自分なりにフォーマットの形式をカスタマイズしたい、という場合は、DateFormatのサブクラスである「SimpleDateFormat」を利用するのがよいでしょう。これは以下のような形でインスタンスを作成します。
フォーマットのパターンは、あらかじめ用意されている特別な記号を使って組み立てます。用意されているのは以下のような記号です。
これらの記号を組み合わせてパターンのテキストを作ります。簡単な例を下にあげておきましょう。ここでは、"yyyy年 M月 d日(E)"というようにしてパターンを用意してあります。これで、「2012年 7月 22日(日)」というような形式で日時が表示されるようになります。年の値は、このようにyyyyと4つ並べると4桁表記に、yyとすると2桁表記になります。
日時の値をわかりやすい形式にフォーマットするには、java.textパッケージにある「DateFormat」というクラスを使います。これが、日時をフォーマットするための機能を提供するためのものです。これは以下のような形でインスタンスを取得します。
DateFormat 変数 = DateFormat.getInstance();getInstanceは、日時をフォーマットするためのもので、getDateInstanceとgetTimeInstanceはそれぞれ日付・時刻をフォーマットするものを作成します。こうして作成したDateFormatインスタンスから「format」メソッドを呼び出すことで、日時をフォーマットしたテキストを得ることができます。
DateFormat 変数 = DateFormat.getDateInstance();
DateFormat 変数 = DateFormat.getTimeInstance();
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桁表記になります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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())); }
※関連コンテンツ