ホームページ > Java > &#&チュートリアル > Java で日付文字列を解析すると「不正なパターン文字 'T'」がスローされるのはなぜですか?

Java で日付文字列を解析すると「不正なパターン文字 'T'」がスローされるのはなぜですか?

Patricia Arquette
リリース: 2024-12-18 08:41:11
オリジナル
147 人が閲覧しました

Why Does Parsing a Date String in Java Throw

日付文字列を 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート