1

我尝试以 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"
4

2 回答 2

8

是的,您已经创建了一个格式为一种格式(“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);

请注意, parsedDate对格式化一无所知- 调用的结果toString()(正如您在此处隐式所做的那样)始终只是 JRE 默认时区中的默认格式。如果您想以特定格式打印出来,请SimpleDateFormat再次使用。

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

于 2012-11-11T17:58:03.423 回答
2

当然,您date string不在format您正在使用的SimpleDateFormat. 因此它将无法将其解析为date object.

尝试使用这个: -

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
于 2012-11-11T17:58:27.070 回答