Java で printf() を使って日付を書式設定する方法

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Java は、汎用的な printf() メソッドを含む、日付と時刻を書式設定するための強力なツールセットを提供しています。このチュートリアルでは、Java アプリケーションで printf() を活用して日付を書式設定する方法を、基本的な手法から高度な手法まで解説します。初心者でも経験豊富な Java 開発者でも、このガイドを通じて日付の取り扱い能力を向上させ、より効率的で読みやすいコードを書くことができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/output("Output") java/StringManipulationGroup -.-> java/strings("Strings") java/StringManipulationGroup -.-> java/stringbuffer_stringbuilder("StringBuffer/StringBuilder") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/format("Format") subgraph Lab Skills java/output -.-> lab-414032{{"Java で printf() を使って日付を書式設定する方法"}} java/strings -.-> lab-414032{{"Java で printf() を使って日付を書式設定する方法"}} java/stringbuffer_stringbuilder -.-> lab-414032{{"Java で printf() を使って日付を書式設定する方法"}} java/date -.-> lab-414032{{"Java で printf() を使って日付を書式設定する方法"}} java/format -.-> lab-414032{{"Java で printf() を使って日付を書式設定する方法"}} end

Java での日付書式設定のはじめに

Java で日付を書式設定することは、開発者がよく遭遇する一般的なタスクです。Java は、printf() 関数を含む、日付を書式設定するための様々なメソッドとツールを提供しています。printf() 関数を使用すると、特定のパターンを使って日付を書式設定できるため、日付を一貫した読みやすい形式で表示することが簡単になります。

このセクションでは、printf() 関数を使用して Java で日付を書式設定する基本を探っていきます。利用可能なさまざまな日付と時刻の書式設定パターンを説明し、それらを効果的に使用する方法を理解するための例を提供します。

日付書式設定の基本

Java の printf() 関数は、日付をどのように表示するかを指定するために書式文字列(format string)を使用します。書式文字列は、リテラルテキストと書式指定子(format specifier)の組み合わせで構成されており、書式指定子は % 文字に続いて文字または文字の組み合わせで表されます。

以下は、printf() 関数を使用して日付を書式設定する方法の例です。

import java.time.LocalDate;
import java.time.LocalDateTime;

public class DateFormatting {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.printf("Today's date is: %tD%n", date);
        System.out.printf("The current date and time is: %tF %tT%n", dateTime, dateTime);
    }
}

出力:

Today's date is: 04/18/23
The current date and time is: 2023-04-18 14:35:22

この例では、%tD%tF の書式指定子を使用して、それぞれ MM/dd/yyyyyy-MM-dd の形式で日付を表示しています。また、%tT の書式指定子を使用して、HH:mm:ss の形式で時刻を表示しています。

日付書式設定パターン

Java は、printf() 関数で使用できる幅広い日付と時刻の書式設定パターンを提供しています。以下は、最も一般的なパターンのいくつかです。

パターン 説明
%tA 曜日の完全な名前(例: "Monday")
%ta 曜日の省略名(例: "Mon")
%tB 月の完全な名前(例: "January")
%tb 月の省略名(例: "Jan")
%td 月の日を 2 桁の数字で表したもの(例: "18")
%te 月の日を数字で表したもの(例: "18")
%tY 年を 4 桁の数字で表したもの(例: "2023")
%ty 年を 2 桁の数字で表したもの(例: "23")
%tH 24 時間制での時(例: "14")
%tI 12 時間制での時(例: "02")
%tM 分(例: "35")
%tS 秒(例: "22")
%tL ミリ秒(例: "123")
%tp 午前/午後の指定子(例: "PM")

これらのパターンを組み合わせることで、より複雑な日付と時刻の書式を作成することができます。たとえば、パターン "%tA, %tB %te, %tY" は、日付を "Monday, April 18, 2023" として表示します。

printf() を使用した日付書式設定

Java の printf() 関数は、日付と時刻を書式設定する強力で柔軟な方法を提供します。適切な書式指定子を使用することで、アプリケーションに表示される日付と時刻の情報の外観とレイアウトを制御できます。

printf() による基本的な日付書式設定

printf() 関数を日付書式設定に使用するには、日付または時刻のオブジェクトを引数として、書式指定子とともに渡すことができます。以下は例です。

import java.time.LocalDate;
import java.time.LocalDateTime;

public class DateFormatting {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.printf("Today's date is: %tD%n", date);
        System.out.printf("The current date and time is: %tF %tT%n", dateTime, dateTime);
    }
}

出力:

Today's date is: 04/18/23
The current date and time is: 2023-04-18 14:35:22

この例では、%tD 書式指定子を使用して日付を MM/dd/yy 形式で表示し、%tF%tT 書式指定子を使用して、それぞれ日付を yyyy-MM-dd 形式、時刻を HH:mm:ss 形式で表示しています。

printf() による高度な日付書式設定

printf() 関数を使うと、より複雑な日付と時刻の書式設定パターンも使用できます。たとえば、複数の書式指定子を組み合わせて、カスタムの日付と時刻の書式を作成することができます。

import java.time.LocalDateTime;

public class DateFormatting {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        System.out.printf("Today is %tA, %tB %te, %tY at %tI:%tM:%tS %tp%n",
                dateTime, dateTime, dateTime, dateTime, dateTime, dateTime, dateTime);
    }
}

出力:

Today is Tuesday, April 18, 2023 at 02:35:22 PM

この例では、書式指定子を組み合わせて、曜日、月、日、年、時、分、秒、および午前/午後の指定子を含む、より読みやすい形式で日付と時刻を表示しています。

printf() 関数と利用可能な日付と時刻の書式指定子の使用方法を習得することで、Java アプリケーションで高度にカスタマイズされた有益な日付と時刻の表示を作成することができます。

高度な日付書式設定手法

printf() 関数を使った基本的な日付書式設定手法は便利ですが、Java は複雑な日付と時刻のシナリオを処理するために利用できる、より高度な日付書式設定オプションも提供しています。

ローカライズされた日付書式設定

Java の日付と時刻の API は、ローカライズされた日付と時刻の書式設定をサポートしており、特定のロケールに適した形式で日付と時刻を表示できます。Locale クラスを使って目的のロケールを指定し、適切な書式指定子とともに printf() 関数を使用することができます。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class DateFormatting {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        // Format date and time for the French locale
        Locale frenchLocale = Locale.FRANCE;
        String frenchFormat = "%1$ta %1$te %1$tb %1$tY %1$tH:%1$tM:%1$tS";
        System.out.printf(frenchLocale, frenchFormat, dateTime);
        System.out.println();

        // Format date and time for the Chinese locale
        Locale chineseLocale = Locale.CHINA;
        String chineseFormat = "%1$tY年%1$tm月%1$td日 %1$tH:%1$tM:%1$tS";
        System.out.printf(chineseLocale, chineseFormat, dateTime);
    }
}

出力:

mardi 18 avr. 2023 14:35:22
2023年04月18日 14:35:22

この例では、Locale.FRANCELocale.CHINA 定数を使って、それぞれフランス語と中国語のロケールを指定しています。そして、適切な書式指定子を使って、対応するローカル形式で日付と時刻を表示しています。

DateTimeFormatter を使用した日付の解析と書式設定

Java の DateTimeFormatter クラスは、日付と時刻を解析して書式設定する、より強力で柔軟な方法を提供します。このクラスを使うと、カスタムの日付と時刻のパターンを定義でき、printf() 関数や他の日付と時刻の操作メソッドで使用できます。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateFormatting {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        // Define a custom date and time pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // Format the date and time using the custom pattern
        String formattedDateTime = dateTime.format(formatter);
        System.out.printf("Formatted date and time: %s%n", formattedDateTime);
    }
}

出力:

Formatted date and time: 2023-04-18 14:35:22

この例では、日付と時刻を yyyy-MM-dd HH:mm:ss 形式で表示するカスタムパターンを持つ DateTimeFormatter オブジェクトを作成しています。そして、format() メソッドを使って、このフォーマッタを LocalDateTime オブジェクトに適用し、結果の文字列を表示しています。

Java が提供する高度な日付書式設定手法を活用することで、アプリケーションとそのユーザーの特定のニーズに合った、高度にカスタマイズされたローカライズされた日付と時刻の表示を作成することができます。

まとめ

この包括的な Java チュートリアルでは、printf() メソッドを使用して日付を書式設定する方法を学びました。様々な日付書式設定オプションと手法を理解することで、Java アプリケーションで日付と時刻を効果的に表示できるようになり、全体的なユーザー体験とコードの保守性を向上させることができます。ここで得た知識を活かして、Java のより高度な日付と時刻の取り扱い機能を引き続き探求し、習得することで、プログラミングスキルをさらに向上させることができます。