【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つ目:曜日と月名を含む、読みやすい英語表記の形式
処理の流れ(アルゴリズム)
- プログラムを開始する。
- LocalDateTime型のオブジェクト「date」を宣言する。
- 現在日時を取得して値を設定する。
- DateTimeFormatterオブジェクトを使って、複数の日時フォーマットを定義する。
- 各フォーマットに変換した結果を表示する。
- プログラムを終了する。
サンプルコード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日」のような日本語表記にも簡単に対応できますので、ぜひ実際にコードを動かして試してみてください。
-
Javaで2つの日付を比較する方法をわかりやすく解説!compareTo()の使い方と実行例
Javaで2つの日付を比較したい場合、Comparableインターフェースが提供するcompareTo()メソッドを使うのが基本的な方法です。このメソッドは、2つの日付を比較した結果を整数値(int型)として返します。 compareTo()メソッドの戻り値 0 を返す … 両方の日付が等しい場合 0 より大きい値を返す … date1 が date2 より後の日付の場合 0 より小さい値を返す … date1 が date2 より前の日付の場合 構文 int compareTo(T o) サンプルコード 以下の例では、SimpleDateFormatを使って文字列をDateオブジェクトに
-
Pythonでカレンダーを作る方法!calendarモジュールの基本と使い方を解説
Pythonには、カレンダーを扱うためのcalendarという標準モジュールが組み込まれています。この記事では、calendarモジュールの基本的な使い方について解説していきます。calendarモジュールでは、1週間は月曜日から始まり日曜日に終わります。また、このモジュールはグレゴリオ暦(西暦)に準拠しています。それでは、calendarモジュールの便利なメソッドをいくつか見ていきましょう。年間カレンダーを取得する特定の年のカレンダー全体を取得したい場合は、calendar.calendar(year)クラスのインスタンスを作成し、それを出力します。以下に具体例を示します。コード例# cal