日付文字列を java.util.Date に解析するときに不正なパターン文字 'T'
日付文字列を java.util.Date に解析します。日付オブジェクトには、特定のルールに準拠したパターンが必要です。一般的なパターンの 1 つは、ISO 8601 形式で日付を表す「yyyy-MM-ddThh:mm:ssZ」です。
問題:
指定されたパターンを使用する場合、例外が発生します。 「java.lang.IllegalArgumentException: 不正なパターン文字」というメッセージとともにスローされる'T'."
理由:
パターン内の 'T' は、日付と時刻のコンポーネント間の区切り文字を表します。ただし、Java の SimpleDateFormat では、「T」文字を正しく認識するには、両側を一重引用符でエスケープする必要があります。
解決策 1: パターンで 'T' をエスケープする
元のパターンを使用して問題を解決するには、「T」文字を次のようにエスケープします。
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
解決策 2: ISO_8601_24H_FULL_FORMAT を使用する
代わりに、Q2597083 で提供される事前定義された ISO_8601_24H_FULL_FORMAT 定数を使用することもできます。 class:
String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
Java 8 以降の場合:
Java 8 以降の場合、SimpleDateFormat の代わりに DateTimeFormatter クラスを使用し、Date の代わりに Instant を使用することをお勧めします。以下に例を示します。
import java.time.Instant; import java.time.format.DateTimeFormatter; String dateString = "2010-10-02T12:23:23Z"; DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; Instant d = Instant.parse(dateString); System.out.println(d.getYear());
これらのソリューションを使用すると、「不正なパターン文字 'T'」例外が発生することなく、ISO 8601 形式の日付文字列を正常に解析できます。
以上がJava で日付文字列を解析すると「不正なパターン文字 'T'」がスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。