3

次の日付文字列を検討してください

  • 2012-10-01 01:02:03.004+0500

SimpleDateFormatこれは、Javaで次のパターンを使用して認識されます。

  • yyyy-MM-dd HH:mm:ss.SSSZ

ただし、上記のタイムゾーン情報が2桁に切り捨てられた場合、つまり

  • 2012-10-01 01:02:03.004+05

日付文字列は有効な形式に準拠していないSimpleDateFormatため、正しく解析するために使用できるパターンはありません。

文字列の前処理なしで切り捨てられたタイムゾーンを正しく解析するための回避策はありますか?

そうでない場合、この同様の質問のように、たとえば呼び出しを使用して、 1ラウンドでそのような多数の日付文字列に対して実行される前処理に最適な正規表現はどれですか?replaceFirst()

4

1 に答える 1

2

文字列の前処理なしで良い解決策はわかりませんが、replaceFirst許容できる場合は、次のコード スニペットを使用できます。

dateStr.replaceFirst("(?<=[+-]\\d\\d)$", "00")

このコードは、末尾が ideone<plus|minus><digit><digit>の文字列に 2 つのゼロを追加します。

于 2012-10-18T10:02:27.990 に答える