2014-04-01 34 views
0

我想将yyyyMMdd,yyyy-MM-dd,yyyy/MM/dd等几种格式的日期转换为'yyyy-MM-dd HH:mm:ss'的标准。在下面的代码中,我将预期的日期格式设置为'yyyyMMdd',然后在'2014-02-21'中传递。我期待一个解析异常,但一些如何返回'2013-12-02 00:00:00'。我在这里错过了什么?Java SimpleDateFormat

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyyMMdd"); 
Date date = sdfSource.parse("2014-02-21"); 
SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println(sdfDestination.format(date)); 
+0

4个答案在同一分钟内! – PbxMan

回答

3

我会建议在该片段的前两行之间添加sdfSource.setLenient(false);

这里发生了什么事是"-0"被解释为月份,而"2"被解释为当天。宽恕真实(这是默认)这是可以接受的 - "-0"被解释为第一个月之前的月份;即“上一年的十二月”。

+0

谢谢,这工作。当我试图找出这个问题时,我发现了这个问题,但是有些问题我看过了。 – kiran

1

默认情况下,lenient属性设置为true。 here

sdfSource.setLenient(false); 
+0

谢谢,这工作。 – kiran