不正な文字を含む日付文字列の解析
SimpleDateFormat を使用して Java で日付文字列を解析しようとすると、例外「不正なパターン」が発生する場合があります。文字「T」」。この問題は、ISO 8601 標準に準拠する場合に時刻コンポーネントを指定する「T」文字が日付文字列に含まれている場合に発生します。
例外の原因
The SimpleDateFormatクラスは、「T」を文字列の日付部分と時刻部分を区切る特殊文字として解釈します。ただし、デフォルトのパターンには文字として「T」が含まれていないため、例外が発生します。
考えられる解決策
この問題に対処するには、いくつかの方法があります。
を変更しますパターン:
DateTimeFormatter を使用する (Java 8) ):
例:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"); Date date = formatter.parse("2010-10-02T12:23:23Z", LocalDateTime::from);
手動文字列分割:
注:
日付文字列の末尾に UTC を示す 'Z' が含まれている場合パターンの「XXX」部分が次のとおりであることを確認してください。
改良されたコード サンプル (エスケープされた 'T' を含む):
public static void main(String[] args) { String date = "2010-10-02T12:23:23Z"; String pattern = "yyyy-MM-dd'T'hh:mm:ssXXX"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { Date d = sdf.parse(date); System.out.println(d.getYear()); } catch (ParseException e) { e.printStackTrace(); } }
以上がJavaで日付を解析するときに「不正なパターン文字「T」」を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。