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

mis*_*sco 0 java formatting date

我尝试以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);
Run Code Online (Sandbox Code Playgroud)

它给了我以下例外

java.text.ParseException: Unparseable date: "2012-11-02 12:02:00"
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 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);
Run Code Online (Sandbox Code Playgroud)

需要注意的是解析Date不会知道什么格式-调用的结果toString()(因为你在做隐含在这里)永远只是默认的格式,在JRE默认时区.如果要以特定格式打印出来,请SimpleDateFormat再次使用.

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