SimpleDateFormat - 无法解析?

时间:2013-07-30 03:12:07

标签: java date format

看看我的代码:

 try {
           // String date = "30Jul2013";
            SimpleDateFormat sdf = new SimpleDateFormat("ddMMMyyyy", Locale.ENGLISH);
            Date d = sdf.parse(date);

            SimpleDateFormat nsdf = new SimpleDateFormat("MMMM dd, yyyy h:mm a", Locale.ENGLISH);
            String nd = nsdf.format(d);
            System.out.println(nd);

            return nd;
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

我收到了一个错误:

java.text.ParseException: Unparseable date: "2013-07-30 10:58:55.171"
at java.text.DateFormat.parse(DateFormat.java:337)

我想从simpledateformat获得2013年7月30日上午11:10的输出。我的代码中有LOCALE。那我该怎么办?

提前致谢!

1 个答案:

答案 0 :(得分:2)

 try {
        // String date = "30Jul2013";
        SimpleDateFormat sdf = new SimpleDateFormat("ddMMMyyyy", Locale.ENGLISH);
        Date d = sdf.parse(date);

你的日期字符串变量行被注释掉了,那么谁知道你正在解析什么字符串? - JVM是谁。

正如Robert Harvey指出的那样,您实际尝试解析的字符串将在异常消息中为您打印。如果你在解析之前打印那个字符串,你也会发现它不是你所期望的那样,而且编译器是正确的。

总而言之,您在某种程度上期望您的sdf SimpleDateFormat对象正在格式化类似于“30Jul2013”​​的格式的String,但是JVM告诉您这不是这样,您尝试解析的String事实看起来不像这样,而是“2013-07-30 10:58:55.171”。