我尝试以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"
答案 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
不在format
中SimpleDateFormat
。因此,它无法将其解析为date object
。
尝试使用: -
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");