无法解释的日期

时间:2012-11-29 10:12:41

标签: java date

我有一个字符串日期" 31-Dec"和模式" dd-MMM"。和下一个代码

DateFormat formatter = new SimpleDateFormat(pattern);
formatter.setTimeZone(timeZone);
formatter.parse(input);

生成异常

java.text.ParseException: Unparseable date: "31-Dec"
    at java.text.DateFormat.parse(DateFormat.java:337)....

我做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:5)

一个问题可能是您的Locale不是英语。试试这个:

DateFormat formatter = new SimpleDateFormat("dd-MMM", Locale.ENGLISH);
try {
    System.out.println(formatter.parse("31-Dec"));
} catch (ParseException e) {
    e.printStackTrace();
}

这对我来说是:

  

Thu Dec 31 00:00:00 CET 1970

由于您在日期字符串中缺少一年,因此您会看到它会自动插入1970年份。

答案 1 :(得分:1)

我写了一个可以在我的机器上运行的简单示例。试一试你的问题,它可以帮助你找出问题所在。

public class Example {

    public static void main(String[] args) {
        String data = "31-Dec";
        String pattern = "dd-MMMM";

        DateFormat formatter = new SimpleDateFormat(pattern);
        formatter.setTimeZone(TimeZone.getDefault());
        try {
            Date date = formatter.parse(data);
            System.out.println(date.getDate());
            System.out.println(date.getMonth());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

答案 2 :(得分:0)

我认为,您的输入字符串(表示日期)不符合模式中描述的格式。

答案 3 :(得分:0)

试试这个---

    String pattern = "dd-MMM";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setTimeZone(TimeZone.getDefault());
String input = "31-Dec";
try
{
    dateFormat.parse(input);
    Calendar cal = dateFormat.getCalendar();
    System.out.println("Day "+cal.get(Calendar.DAY_OF_MONTH));
    System.out.println("MONTH "+ cal.get(Calendar.MONTH));

}catch(Exception e)
{

}