こんにちは!しーま(@s59shima)です。
いつもブログをご覧いただきありがとうございます。
今回は、こんな悩みや疑問のある方に向けて記事を書きました。

日付を指定した書式(フォーマット)に変換したり、DBに日付登録するために型を変換したいけど、どうやればいいの!?
日付を西暦・和暦に変換したり、日付型・文字列型に変換したい方にはおすすめの記事です。
- 日付を扱うクラスは Date と Calender クラスの2択
- 日付をフォーマットするには SimpleDateFormat クラスが必要
- フォーマットできる文字パターンが19種類
- 日付型と文字列型(String)の相互変換が可能
- 日付を和暦に変換可能
日付を扱うクラスは「Date」と「Calender」の2択
DateクラスとCalenderクラスは共に日付を扱うクラスですが、それぞれ特徴が異なります。そのため、用途に合わせて使い分ける必要があります。
java.util.Dateクラスの特徴
できること
- 現在日付・時刻の保持。
- 文字列との変換が可能。
できないこと
- 日付の計算。
java.util.Calenderクラスの特徴
できること
- 現在日付・時刻の保持。
- 日付の計算(加算・減算)
- 年/月/日/時/分/秒単位で取得可能
できないこと
- 文字列との変換
日付をフォーマットするには「SimpleDateFormat」クラスが必要
画面などに日付を表示する際、特定の形式にして表示することが可能です。それを可能にしてくれるのがSimpleDateFormatクラスです。
例)
2020年02月28日12時30分45秒
2020/02/28 12:30:45
令和02年02月28日 など
SimpleDateFormatクラスで利用できるパターン文字一覧
上記のような特定の表示形式にするにはパターン文字を使うことで実現できます。
No | 文字 | 説明 |
---|---|---|
1 | G | 紀元 |
2 | y | 年 |
3 | M | 月 |
4 | d | 日 |
5 | H | 時(0〜23) |
6 | m | 分 |
7 | s | 秒 |
8 | S | ミリ秒 |
9 | E | 曜日 |
10 | z/Z | タイムゾーン |
11 | a | 午前 / 午後 |
パターン文字には大文字・小文字が含まれる
上記のパターン文字一覧を見てわかるように大文字・小文字で取得する内容が異なる場合がありますので注意してください。
M → 月
m → 分
s → 秒
S → ミリ秒
年月日はyyyy㎜dd形式で取得
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat1 = new SimpleDateFormat(" yyyy年 MM月 dd日 ");
DateFormat dateFormat2 = new SimpleDateFormat(" yyyy/MM/dd ");
System.out.println( dateFormat1.format(date) );
System.out.println( dateFormat2.format(date) );
}
}
実行結果は以下の通り
2020年 03月 01日
2020/03/01
時分秒はhhmmss形式で取得
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat3 = new SimpleDateFormat(" HH時 mm分 ss秒 ");
DateFormat dateFormat4 = new SimpleDateFormat(" a KK時 mm分 ss秒 ");
System.out.println( dateFormat3.format(date) );
System.out.println( dateFormat4.format(date) );
}
}
実行結果は以下の通り
08時 16分 25秒
午前 08時 16分 25秒
曜日は大文字の「E」で取得
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat1 = new SimpleDateFormat(" E ");
DateFormat dateFormat2 = new SimpleDateFormat(" EEEE ");
System.out.println( dateFormat1.format(date) );
System.out.println( dateFormat2.format(date) );
}
}
実行結果は以下の通り
日
日曜日
ミリ秒は大文字の「S」で取得
DateFormat dateFormat = new SimpleDateFormat(” HH:mm:ss:SSS“);
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat(" HH:mm:ss:SSS");
System.out.println( dateFormat.format( date ) );
}
}
実行結果は以下の通り
14:16:28:152
大文字の「S」に注意しましょう!
タイムゾーンはz・Zのどちらかで取得
タイムゾーンとは、世界標準時間と日本時間の時差のことです。
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat1 = new SimpleDateFormat(" z ");
DateFormat dateFormat2 = new SimpleDateFormat(" ZZZZ ");
System.out.println( dateFormat1.format( date ) );
System.out.println( dateFormat2.format( date ) );
}
}
実行結果は以下の通り
GMT+09:00
+0900
≪世界最大級のオンライン学習プラットフォーム≫
開発者に大人気のベストセラーパッケージ
日付型と文字列型(String)に相互変換
日付クラス(Date) ⇒ 文字列型(String)に変換
サンプルコードはこちら
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) {
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat(" yyyy年MM月dd日 HH時mm分ss秒 ");
System.out.println( dateFormat.format( date ) );
}
}
実行結果は以下の通り
2020年03月01日 14時26分19秒
文字列型(String) ⇒ 日付クラス(Date) に変換
サンプルコードはこちら
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
public static void main(String[] args) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat( "yyyy年MM月dd日 HH時mm分ss秒" );
Date date = dateFormat.parse( "2020年03月01日 15時30分45秒" );
System.out.println( date );
}
}
実行結果は以下の通り
Sun Mar 01 15:30:45 GMT+09:00 2020
日付を西暦・和暦に変換する
java.time.chrono.JapaneseDateクラスを使用します
サンプルコードはこちら
import java.time.chrono.JapaneseDate;
import java.time.format.DateTimeFormatter;
public class Sample {
public static void main(String[] args) {
JapaneseDate date = JapaneseDate.of(2020,03,01);
String wareki = DateTimeFormatter.ofPattern( "GGGGy年M月d日" ).format(date);
System.out.println( wareki );
}
}
実行結果は以下の通り
令和2年3月1日
まとめ
今回は、日付のフォーマットについて解説を行いました。
本記事をまとめると以下の通りです。
- 日付を扱うクラスは Date と Calender クラスの2択
- 日付をフォーマットするには SimpleDateFormat クラスが必要
- フォーマットできる文字パターンが19種類
- 日付型と文字列型(String)の相互変換が可能
- 日付を和暦に変換可能
Mid Works
は業界トップクラスの低マージンで多くのエンジニアから選ばれています!! IT系フリーランス専門エージェントサービス第1位の Mid Works
の無料会員登録はこちらから!!