我有这个示例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);
答案 0 :(得分: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");