-3

看看我的代码:

 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。那我还应该怎么做?

提前致谢!

4

1 回答 1

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

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

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

总之,您以某种方式期望您的 sdf SimpleDateFormat 对象正在格式化格式类似于“30Jul2013”​​的字符串,但 JVM 告诉您这根本不是这样,您尝试解析的字符串实际上看起来什么都没有像这样,而是“2013-07-30 10:58:55.171”。

于 2013-07-30T03:13:31.887 回答