1

我有一个字符串日期“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

4 回答 4

5

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

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

这为我返回:

1970 年 12 月 31 日星期四 00:00:00 CET

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

于 2012-11-29T10:27:26.403 回答
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();
        }
    }
}
于 2012-11-29T10:48:08.103 回答
0

我认为,您的输入字符串(代表 date )不是模式中描述的格式。

于 2012-11-29T10:17:22.693 回答
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)
{

}
于 2012-11-29T10:45:27.610 回答