为什么会抛出一个异常,那个日期很直接不是吗?
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)
答案 0 :(得分:2)
不要使用Date.parse()
来解析日期。正如您在API documentation中看到的那样,该方法已被弃用,这意味着它被另一个方法替换。 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);
答案 1 :(得分:1)
主要问题是您在字符串末尾有日期。它应该在月之后出现,例如:
2013年4月3日星期三00:00:00 BST
请read the documentation获取完整说明。另请注意,Date.parse
已弃用,而不是DateFormat.parse
。
答案 2 :(得分:1)
1)不推荐使用Date.parse
2)Date.parse API说它接受许多语法;特别是,它承认IETF标准日期语法:“星期六,1995年8月12日13:30:00 GMT”。它也理解美国大陆时区的缩写,但对于一般用途,应使用时区偏移:“星期六,1995年8月12日13:30:00 GMT + 0430”(格林威治以西4小时30分钟)子午线)。如果未指定时区,则假定为本地时区。 GMT和UTC被认为是等效的。但您的语法不是所描述的。
3)改为使用SimleDateFormat