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.util.Date.parse(Date.java:595) 处的 java.lang.IllegalArgumentException

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”。它还可以理解美国大陆时区缩写,但对于一般用途,应使用时区偏移量:“Sat, 12 Aug 1995 13:30:00 GMT+0430”(格林威治以西 4 小时 30 分钟)子午线)。如果未指定时区,则假定为本地时区。GMT 和 UTC 被认为是等效的。但是您的语法没有描述。

3) 改用 SimleDateFormat

于 2013-03-20T11:49:37.410 回答