2015-04-27 72 views
0

我可能会在分析日期时感到怀疑。java.text.ParseException:Unparseable date:“2014/02/20”

以下是代码:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD"); 
    Date d = format.parse("2014/02/20"); 
    System.out.println(d); 
+0

你的约会模式是不同的,同时更换'和'dd' DD'。[检查](http://ideone.com/0jSVqp) – silentprogrammer

+0

初始化格式化像新的SimpleDateFormat( “YYYY/MM/DD”) –

回答

1

您的日期格式不匹配的字符串。

Date d = format.parse("2014-02-20"); 

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 
+1

'DD'是一年中的一天(这不是我谁downvoted) –

+0

@SashaSalauyou感谢纠正,没有注意到。 – TEXHIK

3

不仅有你得到了斜杠/破折号错了,你还使用DD(年的一天),而不是dd(月日)。你想:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

与往常一样,读the documentation找出到底是什么图案符号的意思是 - 如果你发现它的表现很奇怪,检查模式对数据非常仔细

建议:

  • 使用Joda Time(前的Java-8)或java.time(Java 8)如果你所能;该java.util.Date/Calendar API是可怕的
  • 指定区域明确
  • 指定的时间段明确

目前正在使用的默认时区和语言环境。虽然语言环境在这种情况下可能并不重要(除非它用于选择日历系统;我不记得非主动),我认为明确指定它更为明确。时区绝对事项;如果你只想把它当作一个日期(没有时间),那么可能值得指定UTC - 这样就可以很容易地与其他任何东西进行交互操作,并且你可以在基本毫秒表示的明显位置获得日界限。

+0

刚刚意识到第二个问题......:D – Mena

相关问题