以下が機能しないのはなぜですか?最後のリテラルゼロが原因のようです...
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS0");
format.setLenient(false);
String d = format.format(new Date());
System.out.println(format.parse(d));
以下が機能しないのはなぜですか?最後のリテラルゼロが原因のようです...
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS0");
format.setLenient(false);
String d = format.format(new Date());
System.out.println(format.parse(d));
パターンの最後にゼロ (0) を追加する必要がある理由はわかりませんが、not パターン文字を '' で囲んで機能させる必要があります。
final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'0'");
より詳しい情報:
SimpleDateFormat
、ドキュメントの冒頭にある例のセクション。コードの問題はこの行にあります
System.out.println(format.parse(d));
3 桁を超えるミリ秒を java.util.Date に解析しようとすると、例外が発生します。文字列を解析するパターンは
"yyyy-MM-dd HH:mm:ss.SSS" //without the zero at the end, now your whole code will work...
ナノ秒を使用している場合、またはデータにナノ秒が含まれている場合は、これらの値を無視できます。また、ナノ秒は Java Date/Time API ではサポートされていません (ドキュメントでは言及されていません)。
さまざまな目的で本当にナノ秒が必要な場合は、Date オブジェクトの代わりに String を使用する必要があります。