0

SimpleDateFormat に設定されたパターンに基づいて、 String を Date に解析しようとしているこのサンプル Java コードがあります。このコードを JDK6 で実行すると、正常に動作します。しかし、JDK7 では、解析呼び出しで NULL が返されました。JDK7 で何が変更されたのか。これは既知の問題ですか、それとも回避策ですか?

  SimpleDateFormat _theSimpleDateFormatHelper =  new SimpleDateFormat();
  _theSimpleDateFormatHelper.setLenient(false);
  _theSimpleDateFormatHelper.applyPattern("yyyy-MM-dd hh:mm:ss");

  ParsePosition parsePos = new ParsePosition(0);
  Object formattedObj = _theSimpleDateFormatHelper.parse("1989-09-21 00:00:00", parsePos);
4

1 に答える 1

1

次のコードは正常に動作します。

SimpleDateFormat _theSimpleDateFormatHelper =  new SimpleDateFormat();
//_theSimpleDateFormatHelper.setLenient(false); <-- In lenient mode, the parsing succeeds
_theSimpleDateFormatHelper.applyPattern("yyyy-MM-dd hh:mm:ss");

ParsePosition parsePos = new ParsePosition(0);
Object formattedObj = _theSimpleDateFormatHelper.parse("1989-09-21 00:00:00", parsePos);

動作しない理由は、strict モードでの形式が正しくないためです。このページhttp://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.htmlから、範囲が 1 ~ 12 であることがわかりますh

代わりに使用Hすると、範囲は 0 ~ 23 になり、これも同様に機能します。

SimpleDateFormat _theSimpleDateFormatHelper =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
_theSimpleDateFormatHelper.setLenient(false);
Object formattedObj = _theSimpleDateFormatHelper.parse("1989-09-21 00:00:00");
于 2013-03-07T19:51:05.300 に答える