Javaでは、SimpleDateFormatクラスを使用して文字列解析(テキスト→日付)およびフォーマット(日付→テキスト)を行うことが出来ます。
※今回使用するDateFormatクラスのパッケージは、java.text.SimpleDateFormatになっています。
同じような日付のフォーマット・解析ができるDateFormatクラスの紹介はこちらでやっているので、続けて確認してください。
SimpleDateFormatでの日付フォーマット
フォーマット | 日付または時刻のコンポーネント | 表示 | 出力例 |
G | 紀元 | テキスト | G:西暦 |
y | 年 | 年 | y:2021年12月31日→2021 yy:2021年12月31日→21 yyyy:2021年12月31日→2021 |
Y | 暦週の基準年 | 年 | Y:2021年12月31日→2022 YY:2021年12月31日→22 YYYY:2021年12月31日→2022 |
M | 月 | 月 | M:2021年4月1日→4 MM:2021年4月1日→04 MMM:2021年4月1日→4月 |
L | 年における月(スタンドアロン形式) | 月 | M:2021年4月1日→4 MM:2021年4月1日→04 MMM:2021年4月1日→4月 |
w | 年における週 | 数値 | w:2021年4月1日→14 ww:2021年4月1日→14 www:2021年4月1日→014 ※wの数0埋めになる |
W | 月における週 | 数値 | W:2021年4月1日→1 WW:2021年4月1日→01 WWW:2021年4月1日→001 ※Wの数0埋めになる |
D | 年における日 | 数値 | D:2021年4月1日→91 DD:2021年4月1日→91 DDD:2021年4月1日→091 ※Dの数0埋めになる |
d | 月における日 | 数値 | d:2021年4月1日→1 dd:2021年4月1日→01 ddd:2021年4月1日→001 ※dの数0埋めになる |
F | 月における曜日 | 数値 | F:2021年4月1日→1 FF:2021年4月1日→01 FFF:2021年4月1日→001 ※dの数0埋めになる |
E | 曜日の名前 | テキスト | E:2021年4月1日→木 EEEE:2021年4月1日→木曜日 |
u | 曜日の番号(1 =月曜、…、7 =日曜) | 数値 | u:2021年4月1日→4 uu:2021年4月1日→04 uuu:2021年4月1日→004 ※uの数0埋めになる |
a | 午前/午後 | テキスト | a:11:30→午前 |
H | 一日における時(0 – 23) | 数値 | H:11:30→11 HH:11:30→11 HHH:11:30→011 ※Hの数0埋めになる |
k | 一日における時(1 – 24) | 数値 | k:11:30→11 kk:11:30→11 kkk:11:30→011 ※kの数0埋めになる |
K | 午前/午後の時(0 – 11) | 数値 | K:11:30→11 KK:11:30→11 KKK:11:30→011 ※Kの数0埋めになる |
h | 午前/午後の時(1 – 12) | 数値 | h:11:30→11 hh:11:30→11 hhh:11:30→011 ※hの数0埋めになる |
m | 分 | 数値 | m:11:30→30 mm:11:30→30 mmm:11:30→030 ※mの数0埋めになる |
s | 秒 | 数値 | s:11:30:10→10 ss:11:30:10→10 sss:11:30:10→010 ※sの数0埋めになる |
S | ミリ秒 | 数値 | S:11:30:10:11→11 SS:11:30:10:11→11 SSS:11:30:10:11→011 ※Sの数0埋めになる |
z | タイムゾーン | 一般的なタイムゾーン | z:日本標準時→JST zzzz:日本標準時→日本標準時 |
Z | タイムゾーン | RFC 822タイムゾーン | Z:日本標準時→+0900 |
X | タイムゾーン | ISO 8601タイムゾーン | X:日本標準時→+09 XX:日本標準時→+0900 XXX:日本標準時→+09:00 |
SimpleDateFormatクラスの主要メソッド
インスタンスの生成方法
SimpleDateFormatクラスは、new演算子を使用してインスタンスを生成します。
インスタンス生成時に使用したいフォーマットを使用して初期化を行います。
使用例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
フォーマットの変更方法
インスタンスに設定されているフォーマットを変更したい場合は、applyPattern メソッドを使用してフォーマットの変更を行うことができます。
使用例
sdf.applyPattern("yyyy年MM月dd日 HH時mm分ss秒");
Date型をフォーマットした文字列に変更する方法
Date型をフォーマットした文字列に変換する場合は、format メソッドを使用して変換を行うことができます。
使用例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println(sdf.format(new Date()));
結果
2022/11/17 12:00:00
文字列をDate型に変換する方法
文字列を指定したフォーマットにてDate型に変換する場合は、parse メソッドを使用して変換を行うことができます。
使用例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println(sdf.parse("2022/11/17 12:00:00"));
結果
Thu Nov 17 12:00:00 JST 2022
まとめ
日付をフォーマット指定して文字列に変換やDate型に変換する方法を説明しました。
画面から入力された値をDate型に変換する際や、データベースの値を表示する際に使用するなど、プログラムを行う上で使う頻度が多いので、この機会に覚えていってください。
コメント