解析日期的例外YYYY-MM-DD HH:mm:ss

时间:2012-11-11 17:56:54

标签: java date formatting

我尝试以YYYY-MM-DD HH格式解析日期:mm:ss

String now = "2012-11-02 12:02:00";
DateFormat formatter;
formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date date_temp = (Date) formatter.parse(now.toString());
System.out.println("output: " + date_temp);

它给了我以下异常

java.text.ParseException: Unparseable date: "2012-11-02 12:02:00"

2 个答案:

答案 0 :(得分:7)

是的,你已经创建了一种格式化的格式(“EEE MMM dd HH:mm:ss z yyyy”),然后给它一个完全不同格式的字符串来解析。为什么你认为会起作用?试试这个:

// Locale specified to avoid any cultural differences. You may also
// want to specify the time zone.
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                                            Locale.US);
Date date = formatter.parse(now);

请注意,已解析的Date确实知道有关格式化的任何内容 - 调用toString()的结果(正如您在此隐式执行的那样)始终只是默认格式,在JRE默认时区。如果您想以特定格式打印出来,请再次使用SimpleDateFormat

另请注意,我已将变量的声明和初始化组合在一起。更喜欢在一行中声明一个变量并稍后给它一个初始值。

答案 1 :(得分:2)

当然,您date string不在formatSimpleDateFormat。因此,它无法将其解析为date object

尝试使用: -

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
相关问题