Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】LocalDateTimeとDateTimeFormatterで日付をさまざまな形式にフォーマットして表示する方法

この記事では、java.timeパッケージDateTimeFormatterクラスを使って、日付を複数の形式で表示するJavaプログラムの書き方を解説します。

Javaには組み込みのDateクラスは用意されていませんが、java.timeパッケージをインポートすれば、日付や時刻を扱うための豊富なAPIを利用できます。このパッケージには、LocalDateTimeやDateTimeFormatterなど、日付処理に便利なクラスが多数含まれています。

実行結果のイメージ

プログラムを実行すると、同じ日付情報が次のように3つの異なる形式で出力されます。

最初の形式(デフォルト):2022-03-17T23:37:37.623304800
2番目の形式:17/03/2022
3番目の形式:Thursday, 17 Mar 2022
  • 1つ目:LocalDateTimeのデフォルト形式(ISO-8601準拠)
  • 2つ目:「日/月/年」の順に並べた形式
  • 3つ目:曜日と月名を含む、読みやすい英語表記の形式

処理の流れ(アルゴリズム)

  1. プログラムを開始する。
  2. LocalDateTime型のオブジェクト「date」を宣言する。
  3. 現在日時を取得して値を設定する。
  4. DateTimeFormatterオブジェクトを使って、複数の日時フォーマットを定義する。
  5. 各フォーマットに変換した結果を表示する。
  6. プログラムを終了する。

サンプルコード1:mainメソッドにまとめて記述する場合

まずは、すべての処理をmainメソッド内に直接記述するシンプルな例です。

import java.time.*;
import java.time.format.DateTimeFormatter;
public class Demo {
    public static void main(String[] args){
        System.out.println("必要なパッケージをインポートしました");
        LocalDateTime date = LocalDateTime.now();
        System.out.println("LocalDateTimeオブジェクトを定義しました");
        System.out.println("\nThe first date format is:" +date);
        DateTimeFormatter date_format_1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        String formattedDate_1 = date.format(date_format_1);
        System.out.println("\nThe second date format is:" +formattedDate_1);
        DateTimeFormatter date_format_2 = DateTimeFormatter.ofPattern("EEEE, dd MMM yyyy");
        String formattedDate_2 = date.format(date_format_2);
        System.out.println("\nThe third date format is:" +formattedDate_2);
    }
}

実行結果

必要なパッケージをインポートしました
LocalDateTimeオブジェクトを定義しました

The first date format is:2022-03-29T08:53:19.809

The second date format is:29/03/2022

The third date format is:Tuesday, 29 Mar 2022

サンプルコード2:オブジェクト指向スタイルで関数に分割する場合

次に、フォーマット処理を独立したメソッドに切り出し、オブジェクト指向プログラミング(OOP)のスタイルで実装した例です。処理を部品化することで、コードの再利用性と可読性が向上します。

import java.time.*;
import java.time.format.DateTimeFormatter;
public class Demo {
    static void print_date_format(LocalDateTime date){
        DateTimeFormatter date_format_1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        String formattedDate_1 = date.format(date_format_1);
        System.out.println("\nThe second date format is:" +formattedDate_1);
        DateTimeFormatter date_format_2 = DateTimeFormatter.ofPattern("EEEE, dd MMM yyyy");
        String formattedDate_2 = date.format(date_format_2);
        System.out.println("\nThe third date format is:" +formattedDate_2);
    }
    public static void main(String[] args){
        System.out.println("必要なパッケージをインポートしました");
        LocalDateTime date = LocalDateTime.now();
        System.out.println("LocalDateTimeオブジェクトを定義しました");
        System.out.println("\nThe first date format is:" +date);
        print_date_format(date);
    }
}

実行結果

必要なパッケージをインポートしました
LocalDateTimeオブジェクトを定義しました

The first date format is:2022-03-29T08:53:58.155

The second date format is:29/03/2022

The third date format is:Tuesday, 29 Mar 2022

主なフォーマットパターンの意味

DateTimeFormatter.ofPattern()に指定できる主なパターン文字は以下のとおりです。

パターン意味表示例
yyyy年(4桁)2022
MM月(2桁)03
dd日(2桁)17
EEEE曜日の完全名Thursday
MMM月の省略名Mar
HH:mm:ss時:分:秒23:37:37

まとめ

java.timeパッケージのLocalDateTimeで現在日時を取得し、DateTimeFormatter.ofPattern()で任意のパターンを指定するだけで、日付を自由な形式に整形できます。用途に応じてパターン文字を組み合わせれば、「yyyy年MM月dd日」のような日本語表記にも簡単に対応できますので、ぜひ実際にコードを動かして試してみてください。

  1. Javaで2つの日付を比較する方法をわかりやすく解説!compareTo()の使い方と実行例

    Javaで2つの日付を比較したい場合、Comparableインターフェースが提供するcompareTo()メソッドを使うのが基本的な方法です。このメソッドは、2つの日付を比較した結果を整数値(int型)として返します。 compareTo()メソッドの戻り値 0 を返す … 両方の日付が等しい場合 0 より大きい値を返す … date1 が date2 より後の日付の場合 0 より小さい値を返す … date1 が date2 より前の日付の場合 構文 int compareTo(T o) サンプルコード 以下の例では、SimpleDateFormatを使って文字列をDateオブジェクトに

  2. Pythonでカレンダーを作る方法!calendarモジュールの基本と使い方を解説

    Pythonには、カレンダーを扱うためのcalendarという標準モジュールが組み込まれています。この記事では、calendarモジュールの基本的な使い方について解説していきます。calendarモジュールでは、1週間は月曜日から始まり日曜日に終わります。また、このモジュールはグレゴリオ暦(西暦)に準拠しています。それでは、calendarモジュールの便利なメソッドをいくつか見ていきましょう。年間カレンダーを取得する特定の年のカレンダー全体を取得したい場合は、calendar.calendar(year)クラスのインスタンスを作成し、それを出力します。以下に具体例を示します。コード例# cal