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

Locale1 つの問題は、英語ではない可能性があります。これを試して:

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

あなたの入力文字列(日付を表す)は、パターンで説明されている形式ではありません。

于 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 に答える