【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など決まった日時情報以外は、好きな記号・文字を組み合わせてフォーマットを作成することができます。