如何解析 'dd MMM yyyy'

5

如何将日期格式从“dd MMM yyyy”转换为“yyyy-MM-dd”?

我知道我需要使用SimpleDateFormat,但它并没有起作用,与类似问题的任何解决方案都不起作用。

我有一个日期“2015年12月18日”,我正在尝试进行格式化,但是我得到了这个错误:

java.text.ParseException:无法解析的日期:“2015年12月18日”

这是我的代码:

public String parseDate(String d) {
    String result = null;
    Date dateObject = null;
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy");
    try {
        dateObject = dateFormatter.parse(d);
        dateFormatter.applyPattern("yyyy-MM-dd");
        result = dateFormatter.format(dateObject);

    } catch (ParseException e) {
        System.out.println(e);
    }

    return result;

}

2
你的默认语言环境是什么?尝试使用 SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy", Locale.US); - Alexis C.
@SotiriosDelimanolis 我的日期字符串没有破折号。 - Asalas77
@ZouZou 我的地区是波兰。 - Asalas77
仔细阅读您的异常信息。 - SSC
@SotiriosDelimanolis 好的,我修复了一个拼写错误。我肯定把“2015年12月18日”作为输入,但我收到了java.text.ParseException: Unparseable date: "18 Dec 2015"异常信息。 - Asalas77
2个回答

7

你是否尝试过

SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yyyy");

替代

SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy");

请注意连字符,因为您的模式与输入不匹配

还有一个有用的提示:使用Locale.US,如@ZouZou所建议的。


2
Locale.US 似乎已经解决了这个问题。 - Asalas77

1
你输入的是"18-Dec-2015",而不是正确的日期格式"dd MMM yyyy"。请尝试输入正确格式的日期,例如"18 Dec 2015",这样就能正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接