4

以下が機能しないのはなぜですか?最後のリテラルゼロが原因のようです...

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));
4

1 に答える 1

7

パターンの最後にゼロ (0) を追加する必要がある理由はわかりませんが、not パターン文字を '' で囲んで機能させる必要があります。

final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'0'");

より詳しい情報:


コードの問題はこの行にあります

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 を使用する必要があります。

于 2012-07-27T03:56:28.017 に答える