ホームページ > Java > &#&チュートリアル > Javaで日付を解析するときに「不正なパターン文字「T」」を処理する方法は?

Javaで日付を解析するときに「不正なパターン文字「T」」を処理する方法は?

Patricia Arquette
リリース: 2024-12-08 00:27:10
オリジナル
960 人が閲覧しました

How to Handle

不正な文字を含む日付文字列の解析

SimpleDateFormat を使用して Java で日付文字列を解析しようとすると、例外「不正なパターン」が発生する場合があります。文字「T」」。この問題は、ISO 8601 標準に準拠する場合に時刻コンポーネントを指定する「T」文字が日付文字列に含まれている場合に発生します。

例外の原因

The SimpleDateFormatクラスは、「T」を文字列の日付部分と時刻部分を区切る特殊文字として解釈します。ただし、デフォルトのパターンには文字として「T」が含まれていないため、例外が発生します。

考えられる解決策

この問題に対処するには、いくつかの方法があります。

  1. を変更しますパターン:

    • パターン文字列の「T」の両側に一重引用符を追加します。これにより文字がエスケープされ、リテラルとして解釈できるようになります。
    • 例: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ")
  2. DateTimeFormatter を使用する (Java 8) ):

    • Java 8 で導入された最新の DateTimeFormatter クラスの使用を開始します。
    • 適切な日付と時刻を含むフォーマッタを作成します。パターン。
    • 例:

       DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
       Date date = formatter.parse("2010-10-02T12:23:23Z", LocalDateTime::from);
      ログイン後にコピー
  3. 手動文字列分割:

    • 上記のアプローチが機能しない場合は、日付文字列を手動で分割することを検討してください。日付と時刻のコンポーネントを個別に解析します。

注:

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

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