如何用Java解析ddMMMyyyy?

如何用Java解析ddMMMyyyy?,java,date,format,Java,Date,Format,我试图用ddMMMyyyy格式解析日期,并将其转换为dd.MM.YYYY。有时我的输入字符串如下:3Mar2014或1Jan2014,但我想,这应该不是ddMMMyyyy格式的问题 SimpleDateFormat formatter = new SimpleDateFormat("ddMMMyyyy"); SimpleDateFormat convert = new SimpleDateFormat("dd.MM.yyyy"); String to = ""; Dat

我试图用ddMMMyyyy格式解析日期,并将其转换为dd.MM.YYYY。有时我的输入字符串如下:3Mar2014或1Jan2014,但我想,这应该不是ddMMMyyyy格式的问题

SimpleDateFormat formatter = new SimpleDateFormat("ddMMMyyyy");
    SimpleDateFormat convert = new SimpleDateFormat("dd.MM.yyyy");
    String to = "";

    Date date;
    try
    {
        date = formatter.parse(from);
        to = convert.format(date);
    }
    catch (ParseException e)
    {
        System.out.println(e.getMessage() + " --- " + from);
    }
我的代码总是说:

Unparseable date: "3Mar2014" --- 3Mar2014

有什么想法吗?

问题在于模式


如果改为使用“dMMMyyyy”,它就像一个符咒,将语言环境更改为英语语言环境,例如

Locale usLocale = new Locale("en", "US");
Locale.setDefault(usLocale);
解决了这个问题

将模式更改为“dMMMyyyy”而不更改区域设置并不能解决问题。它还在说

Unparseable date: "5Oct2014"

将其更改为Mar以避免混淆检查您的
区域设置
。它可能不是英语的,它是用Java8编写的。您使用的是什么版本?我使用的是java版本“1.6.0_65”,在这里运行良好;回答正确。但是也应该添加区域设置,以避免隐式地依赖JVM的当前默认区域设置,这可能会有所不同。