【Java入門】日付・時刻のフォーマットを使いこなす

【Java入門】日付・時刻のフォーマットを使いこなすJava入門
スポンサーリンク

こんにちは!しーま(@s59shima)です。

いつもブログをご覧いただきありがとうございます。

今回は、こんな悩みや疑問のある方に向けて記事を書きました。

日付を指定した書式(フォーマット)に変換したり、DBに日付登録するために型を変換したいけど、どうやればいいの!?

日付を西暦・和暦に変換したり、日付型・文字列型に変換したい方にはおすすめの記事です。

  • 日付を扱うクラスは DateCalender クラスの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文字説明
1G紀元
2y
3M
4d
5H時(0〜23)
6m
7s
8Sミリ秒
9E曜日
10z/Zタイムゾーン
11a午前 / 午後

パターン文字には大文字・小文字が含まれる

上記のパターン文字一覧を見てわかるように大文字・小文字で取得する内容が異なる場合がありますので注意してください。

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日

まとめ

今回は、日付のフォーマットについて解説を行いました。

本記事をまとめると以下の通りです。

  • 日付を扱うクラスは DateCalender クラスの2択
  • 日付をフォーマットするには SimpleDateFormat クラスが必要
  • フォーマットできる文字パターンが19種類
  • 日付型文字列型(String)の相互変換が可能
  • 日付を和暦に変換可能

Mid Works は業界トップクラスの低マージンで多くのエンジニアから選ばれています!! IT系フリーランス専門エージェントサービス第1位の Mid Works の無料会員登録はこちらから!!

Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
Javaスキルで悩んでいる方必見!本気で学習できる環境を探してみよう!
詳細はこちら
タイトルとURLをコピーしました