HOWTO · Java

Java の日付形式の変更

この記事では、Java で日付形式を変更する方法を紹介します

日付文字列を日付形式に変換するために使用できるさまざまなオプションがあります。以下に、望ましい結果を引き出す方法について説明します。以下のコードブロックからさまざまな方法を理解しましょう。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class StringToDateFormat {
  public static void main(String[] args) throws ParseException {
    System.out.print("Way1: ");
    SimpleDateFormat dt = new SimpleDateFormat("yyyyy-MM-dd");
    System.out.print(dt.parse("2021-11-05") + "\n");

    System.out.print("Way2: ");
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss", Locale.ENGLISH);
    System.out.print(formatter.parse("21/JAN/2021 21:35:56") + "\n");

    System.out.print("Way3: ");
    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("EEE, d MMM yyyy", Locale.ENGLISH);
    System.out.print(LocalDate.parse("Wed, 5 May 2021", formatter1) + "\n");

    System.out.print("Way4: ");
    System.out.print(LocalDate.parse("2021-05-31") + "\n");
  }
}

Way1 では、SimpleDateFormat クラスのインスタンスが作成されます。日付文字列が入力される形式の patteern 値を取ります。したがって、このようにして、yyyy-MM-dd 形式で日付を入力しました。パラメータが null または不正の場合、インスタンス化は NullPointerException および IllegalArgumentException としていくつかの例外もスローします。最近作成された formatter オブジェクトを使用して、parse メソッドを初期化します。このメソッドは、日付文字列を入力値として受け取り、解析後に Date データ型を返します。指定された日付文字列とフォーマッタが一致しない場合、または内部的に日付文字列が解析されない場合、ParseException がスローされます。

Way2 でも、SimpleDateFormat クラスを使用して、入力することになっているフォーマットを作成します。しかし今、SimpleDateFormat のオーバーライドされたコンストラクターが呼び出されます。最初のパラメータは、Date 文字列の format/pattern です。もう 1つは、指定された地理的領域または領域を定義する Date です。Note:すべてのロケールがこのメソッドで許可されているわけではありません。ここで、1 か月が mmm 形式の dd/MMM/yyyy HH:mm: ss パターンを確認します。この形式は、月の省略形が mmm 形式で受け入れられることを意味します。さらに、フォーマット文字列では数時間、数分、数秒かかる場合があります。

Way3 では、DateTimeFormat クラスを使用して、日時オブジェクトをフォーマットおよび出力します。メソッド ofPattern は、目的のパターンのフォーマッタを準備するために使用されます。これで、日付を解析するために LocalDate クラスの静的メソッドが呼び出されます。メソッドは、解析するテキストを取得する parse と、入力日付テキストの形式を指定するための DateTimeFormatter です。このメソッドは LocalDate インスタンスを返し、null ではありません。テキストを解析できない場合、DateTimeParseException をスローします。形式には、さらに日の名前を付けることができます。EEE の略語は、フォーマッターでも同じことを示します。

Way4 では、LocalDate クラスの静的ファクトリメソッドである parse メソッドが直接呼び出されます。今回は、フォーマッタインスタンスまたはパターンはまったく定義されません。これで、関数は yyyy-MM-dd 形式の入力日付文字列を受け取ります。指定された日付文字列は常に有効な日付を表す必要があり、DateTimeFormatter.ISO_LOCAL_DATE 形式を使用して変換されます。テキストを解析できない場合、メソッドは例外 DateTimeParseException をスローします。

以下は、日付文字列を Date 形式に変換するコードの出力です。

Way1: Fri Nov 05 00:00:00 IST 2021
Way2: Thu Jan 21 21:35:56 IST 2021
Way3: 2021-05-05
Way4: 2021-05-31