【Java】日時をフォーマットするSimpleDateFormatの使い方
- 作成日:2022/01/31
日時を自分好みの形式に指定できるSimpleDateFormatクラスについて解説します。
SimpleDateFormatとは
SimpleDateFormatとは日時をフォーマットするクラスです。 日時を扱うDateクラスやCalendarクラスと一緒に使う場合が多いです。
例として、Calendarクラスを使い現在の日時を取得して、そのフォーマットを変更してみます。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class App {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//フォーマットの指定
SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd");
//フォーマットを実行し、出力
System.out.println(simp.format(calendar.getTime()));
}
}
まず11行目でSimpleDateFormatクラスのインスタンスを生成していますが、その時にフォーマットを指定します。 今回は「yyyy-MM-dd」という形式で日時をフォーマットしようと思います。
フォーマットの実行はformatメソッドで行います(13行目)。 引数はDate型で、フォーマットしたい日時を渡します。 今回は現在の日時をcalendar.getTime())で取得して渡しています。
2022-01-30
次章では、フォーマットの指定方法を詳しく解説します。
フォーマット指定のやり方
SimpleDateFormatは様々な日時情報をフォーマットできます。
値 | 意味 | パターン | 例 |
---|---|---|---|
G | 紀元 | G | 西暦 |
y | 年 | yyyy | 2022 |
yy | 22 | ||
M | 月 | MM | 01 |
d | 日 | d | 5 |
dd | 05 | ||
H | 時間(0~23) | H | 9(午前9時の場合) |
HH | 09(午前9時の場合)
00(午前0時の場合) |
||
k | 時間(1~24) | k | 1(午前1時の場合) |
kk | 01(午前1時の場合)
24(午前0時の場合) |
||
K | 時間(午前・午後0~11) | K | 0(午前0時または午後0時の場合) |
KK | 00(午前0時または午後0時の場合)
10(午前10時または午後10時の場合) |
||
h | 時間(午前・午後1~12) | h | 1(午前1時または午後1時の場合) |
hh | 01(午前1時または午後1時の場合)
12(午前0時または午後0時の場合) |
||
m | 分 | m | 5(5分の場合) |
㎜ | 05(5分の場合) | ||
s | 秒 | s | 5(5秒の場合) |
ss | 05(5秒の場合) | ||
S | ミリ秒 | S | 5(5ミリ秒の場合) |
SSS | 005(5ミリ秒の場合) | ||
z | タイムゾーン | z | JST |
いくつかサンプルを用意します。
No | 区分 | 例 |
---|---|---|
1 | 書式 | yyyy/MM/dd HH:mm:ss |
出力 | 2022/01/30 23:54:50 | |
2 | 書式 | G:yyyy/MM/dd,kk:mm:ss:SSS タイムゾーンは:zです。 |
出力 | 西暦:2022/01/31,24:00:50:835 タイムゾーンは:JSTです。 | |
3 | 書式 | 今は20yy年のMM月です。時間は午前K時です。 |
出力 | 今は2022年の01月です。時間は午前0時です。 |
このように、YやDなど決まった日時情報以外は、好きな記号・文字を組み合わせてフォーマットを作成することができます。