0
0

JavaでISO日時をフォーマットする方法

Posted at

ISO 8601は国際標準化機構(ISO)によって定められた日時の表記方法であり、国際的なデータ交換において広く利用されています。JavaでISO 8601形式の日時を扱う際、java.timeパッケージは強力なツールセットを提供します。この記事では、任意の形式のISO日時文字列を特定の形式(2021-11-11T13:23:45,123456+09:00)に変換する方法を紹介します。

日時のパース: 最初のステップは、入力されたISO日時文字列をLocalDateTime、ZonedDateTime、またはOffsetDateTimeオブジェクトにパースすることです。入力形式が事前にわかっていない場合は、DateTimeFormatterを使って柔軟に対応することが可能です。
2. 日時の変換: 日時オブジェクトを目的の形式に変換します。このプロセスでは、DateTimeFormatterをカスタマイズして使用します。
3. 結果の出力: 最終的に、変換された日時を文字列として出力します。

Javaコード

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class IsoDateTimeFormatter {
public static void main(String[] args) {
String inputIsoDateTime = "2021-11-11T13:23:45.123456+09:00"; // 例としてこの入力を使用
String outputIsoDateTime = formatIsoDateTime(inputIsoDateTime);
System.out.println(outputIsoDateTime);
}

public static String formatIsoDateTime(String inputIsoDateTime) {
    try {
        // 入力された日時を解析
        ZonedDateTime dateTime = ZonedDateTime.parse(inputIsoDateTime);
        // 目的のフォーマットを定義
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss,SSSSSSXXX");
        // 日時を変換して文字列として返す
        return dateTime.format(formatter);
    } catch (DateTimeParseException e) {
        // 日時の解析に失敗した場合は、エラーメッセージを返す
        return "Invalid ISO DateTime format.";
    }
}

}

このコード例では、ZonedDateTime.parseメソッドを使用してISO日時文字列を解析し、カスタマイズされたDateTimeFormatterを使用して目的の形式に変換しています。この例では、ナノ秒までの精度を含む特定の形式を指定していますが、DateTimeFormatterのパターンを調整することで、異なる形式にも対応可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0