SimpleDateFormat
JDBC タイムスタンプ、特に次の形式の日付を解析してフォーマットするパターンを考え出そうとしています。yyyy-mm-dd hh:mm:ss.fffffffff
ここで、ffffffffff
はナノ秒を示します。
残念ながらnew SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS000000")
機能しません。次の例外がスローされます。
java.text.ParseException: Format.parseObject(String) failed
これは SimpleDateFormat でまったく可能ですか、またはこのケースを処理するために java.text.DateFormat のカスタム サブクラスを作成する必要がありますか? Java で文字列を解析する方法に関する質問ではないことに注意してくださいyyyy-mm-dd hh:mm:ss.fffffffff
。宣言型のアプローチ、つまり、入力文字列の追加の変更を必要としない SimpleDateFormat パターンに興味があります。
例:
2012-02-05 17:00:34.427000000
入力は、ミリ秒の部分が .java.util.Date として解析されることを期待しています427
。
これは私がこれまでに試したフォーマットのリストで、さまざまな理由ですべて失敗しました:
new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS000000")
-java.text.ParseException: Format.parseObject(String) failed
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSSSS", Locale.US)
とnew SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)
- の両方が、予想されるSun Feb 05 17:00:34ではなく、Fri Feb 10 15:37:14として解析されます。(SSS のみが指定されている場合でも、 427000000のナノ秒の部分はミリ秒として扱われます)