0

なぜ例外がスローされるのですか?その日付はかなり単純ですよね?

long date  = Date.parse(request.getParameter("date")); //Wed Apr 03 00:00:00 BST 2013
String formattedDate = new SimpleDateFormat("dd/MM/yyyy").format(date);
reportParams.put("p_date", formattedDate);

原因: java.lang.IllegalArgumentException at java.util.Date.parse(Date.java:595)

4

3 に答える 3

2

Date.parse()日付の解析には使用しないでください。API ドキュメントでわかるように、そのメソッドは非推奨です。つまり、別のメソッドに置き換えられています。API ドキュメントには、代わりに何を使用すべきかについても言及されています: DateFormat.parse().

SimpleDateFormat入力文字列に一致する形式でオブジェクトを作成し、それを使用してDateオブジェクトに解析します。

String text = "Wed Apr 03 00:00:00 BST 2013";
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
Date date = df.parse(text);
于 2013-03-20T11:47:47.947 に答える
1

主な問題は、文字列の最後に日付があることです。それは月の後に来るべきです、例えば:

2013 年 4 月 3 日水曜日 00:00:00 BST

完全な説明については、ドキュメントをお読みください。Date.parseまた、が推奨されていることに注意してくださいDateFormat.parse

于 2013-03-20T11:48:10.623 に答える
1

1) Date.parse は非推奨です

2)Date.parse APIは、多くの構文を受け入れると言います。特に、IETF 標準の日付構文「Sat, 12 Aug 1995 13:30:00 GMT」を認識します。また、米国本土のタイム ゾーンの略語も認識しますが、一般的にはタイム ゾーン オフセットを使用する必要があります。子午線)。タイム ゾーンが指定されていない場合は、ローカル タイム ゾーンが想定されます。GMT と UTC は同等と見なされます。しかし、あなたの構文は説明されていません。

3) 代わりに SimleDateFormat を使用する

于 2013-03-20T11:49:37.410 に答える