Java で日付フォーマットを変換する方法

JavaJavaBeginner
今すぐ練習

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

はじめに

Java は日付と時刻を扱うための堅牢なツールセットを提供していますが、異なる日付フォーマット間の変換は一般的なチャレンジ(Challenge)となることがあります。このチュートリアルでは、Java の日付フォーマットを理解するプロセスを案内し、それらの間の変換の実用的な例を示します。これにより、Java プロジェクトで日付関連のタスクを効果的に管理できるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/format("Format") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") java/SystemandDataProcessingGroup -.-> java/system_methods("System Methods") subgraph Lab Skills java/date -.-> lab-413975{{"Java で日付フォーマットを変換する方法"}} java/format -.-> lab-413975{{"Java で日付フォーマットを変換する方法"}} java/string_methods -.-> lab-413975{{"Java で日付フォーマットを変換する方法"}} java/system_methods -.-> lab-413975{{"Java で日付フォーマットを変換する方法"}} end

Java の日付フォーマットの理解

Java では、日付と時刻は様々な日付と時刻のフォーマットを使用して表されます。これらのフォーマットは、日付と時刻の情報がどのように構造化され、表示されるかを定義します。Java アプリケーションで日付と時刻を扱う際に、これらの日付フォーマットを理解することは重要です。

Java の日付と時刻のクラス

Java は、java.util.Datejava.time.LocalDatejava.time.LocalTimejava.time.LocalDateTime など、日付と時刻を扱うためのいくつかのクラスを提供しています。これらの各クラスには、日付と時刻の情報を表現し、フォーマットする独自の方法があります。

Java の日付フォーマット

Java は java.text.SimpleDateFormat クラスを使用して、日付と時刻のフォーマットを定義し、解析します。このクラスを使用すると、日付と時刻の情報の構造を記述するパターンを指定できます。一般的な日付と時刻のパターンには、以下のようなものがあります。

パターン 説明
"yyyy-MM-dd" "YYYY-MM-DD" 形式の日付を表します(例: "2023-04-24")
"HH:mm:ss" "HH:MM:SS" 形式の時刻を表します(例: "15:30:00")
"yyyy-MM-dd HH:mm:ss" "YYYY-MM-DD HH:MM:SS" 形式の日付と時刻を表します(例: "2023-04-24 15:30:00")

Java アプリケーションで日付と時刻を扱う際に、これらの日付と時刻のパターンを理解することは重要です。

graph TD A[java.util.Date] --> B[java.time.LocalDate] A --> C[java.time.LocalTime] A --> D[java.time.LocalDateTime] B --> E[java.text.SimpleDateFormat] C --> E D --> E

Java での日付フォーマットの変換

Java で日付と時刻を扱う際には、異なる日付フォーマット間で変換する必要があることがよくあります。Java では、java.text.SimpleDateFormat クラスや java.time パッケージを使用するなど、これを実現するためのいくつかの方法が用意されています。

SimpleDateFormat の使用

java.text.SimpleDateFormat クラスを使用すると、指定したパターンを使って日付と時刻の文字列を解析し、フォーマットすることができます。以下は、日付文字列をあるフォーマットから別のフォーマットに変換する方法の例です。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        String dateString = "2023-04-24 15:30:00";
        String inputFormat = "yyyy-MM-dd HH:mm:ss";
        String outputFormat = "MM/dd/yyyy hh:mm a";

        try {
            SimpleDateFormat inputFormatter = new SimpleDateFormat(inputFormat);
            SimpleDateFormat outputFormatter = new SimpleDateFormat(outputFormat);

            Date date = inputFormatter.parse(dateString);
            String formattedDate = outputFormatter.format(date);

            System.out.println("Input date: " + dateString);
            System.out.println("Formatted date: " + formattedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

java.time パッケージの使用

Java 8 で導入された java.time パッケージは、日付と時刻を扱うためのより堅牢で柔軟な方法を提供します。以下は、LocalDateTime オブジェクトを別のフォーマットに変換する方法の例です。

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

public class DateFormatConverter {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.of(2023, 4, 24, 15, 30, 0);
        String inputFormat = "yyyy-MM-dd HH:mm:ss";
        String outputFormat = "MM/dd/yyyy hh:mm a";

        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(inputFormat);
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat);

        String formattedDate = dateTime.format(outputFormatter);

        System.out.println("Input date: " + dateTime.format(inputFormatter));
        System.out.println("Formatted date: " + formattedDate);
    }
}

これらの例はどちらも、SimpleDateFormat クラスまたは java.time パッケージを使用して、Java で日付と時刻のフォーマットを変換する方法を示しています。

日付フォーマット変換の例

このセクションでは、Java での日付フォーマット変換のさらなる例を探っていきます。

日付(Date)と文字列(String)の間の変換

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert Date to String
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateString = dateFormat.format(currentDate);
        System.out.println("Date to String: " + dateString);

        // Convert String to Date
        String inputDateString = "2023-04-24";
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date inputDate = inputFormat.parse(inputDateString);
            System.out.println("String to Date: " + inputDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

LocalDateTime と文字列(String)の間の変換

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

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert LocalDateTime to String
        LocalDateTime currentDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String dateTimeString = currentDateTime.format(dateTimeFormatter);
        System.out.println("LocalDateTime to String: " + dateTimeString);

        // Convert String to LocalDateTime
        String inputDateTimeString = "2023-04-24 15:30:00";
        LocalDateTime inputDateTime = LocalDateTime.parse(inputDateTimeString, dateTimeFormatter);
        System.out.println("String to LocalDateTime: " + inputDateTime);
    }
}

時間的な型(Temporal Types)間の変換

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert Date to LocalDateTime
        Date currentDate = new Date();
        LocalDateTime localDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("Date to LocalDateTime: " + localDateTime);

        // Convert LocalDateTime to Date
        LocalDateTime inputLocalDateTime = LocalDateTime.of(2023, 4, 24, 15, 30, 0);
        Date inputDate = Date.from(inputLocalDateTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("LocalDateTime to Date: " + inputDate);

        // Convert LocalDate to Date
        LocalDate localDate = LocalDate.of(2023, 4, 24);
        Date dateFromLocalDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
        System.out.println("LocalDate to Date: " + dateFromLocalDate);
    }
}

これらの例は、java.text.SimpleDateFormatjava.time クラスの両方を使用して、Java での日付と時刻のフォーマット変換の様々なシナリオをカバーしています。

まとめ

この包括的な Java チュートリアルでは、基礎となる日付フォーマットの概念を理解し、実用的な例を適用するまで、様々な日付フォーマット間の変換方法を学びました。これらの技術を習得することで、Java アプリケーションで日付関連の操作を自信を持って処理できるようになり、シームレスなデータ処理とユーザー体験の向上を実現できます。