涉及SimpleDateFormat和Date的ParseException

时间:2014-10-23 04:47:13

标签: java parsing date simpledateformat

我有这段代码:

SimpleDateFormat sParse = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
java.util.Date sDate = sParse.parse(startDate + " 00:00:00");

startDate的值采用以下格式时,上述工作正常:“23-10-2014”

但我的startDate采用以下格式:“2014年10月23日”,我得到了:

java.text.ParseException: Unparseable date: "23/10/2014".

我如何克服这个问题?

3 个答案:

答案 0 :(得分:3)

你要求编译器解析日期dd-MM-yyyy并且你正在尝试发送dd / MM / yyyy,所以显然它会抛出解析错误,如果你不知道你输入哪种格式然后使用此代码

    SimpleDateFormat sParse = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
    String startDate="23/10/2014".replace("/", "-");
    java.util.Date sDate = sParse.parse(startDate+ " 00:00:00");
    System.out.println(sDate); 

对于这种日期格式,您可以传递以获得输出 23/10/2014 要么 23-10-2014

答案 1 :(得分:1)

使用代码SimpleDateFormat sParse = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");,您告诉解析器期望日期格式为23-10-2014(由 - 分隔),所以显然它不会解析' 23/10/2014年' 为此,您需要将格式字符串指定为dd/MM/yyyy

答案 2 :(得分:0)

理想情况下,您不需要添加" 00:00:00"到startDate字符串。因为,您在日期字符串中获得小时,分钟值,它默认为0.您可以删除" HH:MM:SS"来自模式。

SimpleDateFormat sParse = new SimpleDateFormat(" dd-MM-yyyy hh:mm:ss"); java.util.Date sDate = sParse.parse(startDate +" 00:00:00");

因此如上面的答案所述,你可以简单地做:

 SimpleDateFormat sParse = new SimpleDateFormat("dd-MM-yyyy");
    String startDate="23/10/2014".replace("/", "-");
    java.util.Date sDate = sParse.parse(startDate);
    System.out.println(sDate);