0

我有这个示例 java 代码,我试图根据 SimpleDateFormat 上设置的模式将 String 解析为 Date 。当我在 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);

它不起作用的原因是因为格式在严格模式下不正确。从这个页面http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html,您可以看到h范围是 1-12。

如果您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 回答