将request.getparameter()结果转换为日期

时间:2013-12-23 17:48:38

标签: jsp date request simpledateformat

我有一个jsp页面,它采用输入类型日期。在servlet中使用request.getParameter()和SimpleDateFormat来获取用户输入的日期。

我的问题是我只想得到日,月和年但我也得到时间,这意味着当我显示我以这种格式显示的日期时 - 日名:月:月日:时间:年,但我只想显示 - 年:月:月日。

这就是我所做的:

Date startDate=new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("startDate")); //get the parameter convert it to a data type Date.

out.println(startDate); //Display the date

这里似乎有什么问题?

感谢您的时间。

4 个答案:

答案 0 :(得分:5)

您的问题是您将Date(java.util.Date)对象传递给println方法。 println在日期对象上内部调用Date#toString(),这会产生您不想要的格式。

解决方案

如果您的问题在servlet中,那么您需要Date对象

String startDateStr = request.getParameter("startDate");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//surround below line with try catch block as below code throws checked exception
Date startDate = sdf.parse(startDateStr);
//do further processing with Date object
......
.... 

如果要打印日期,可以根据格式将日期转换为字符串并将该字符串传递给println方法

out.println(sdf.format(startDate)); //this is what you want yyyy-MM-dd  

另见

答案 1 :(得分:0)

你的意思是:

// expected input format in YYYY-MM-DD???
SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd");
String parameter = request.getParameter("startDate");
Date date = in.parse(parameter);

// output format
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
out.println(fmt.format(date));

但是如果输入格式和输出格式相同,那么为什么不简单out.println(parameter)?或者您是否要另外验证输入,例如通过在输入格式上调用setLenient(false)?

答案 2 :(得分:0)

只需使用SimpleDateFormat.parse的反面,说SimpleDateFormat.format。但是,真诚地,我不明白你为什么要用相同的模式解析和格式化... X = format(parse(X))

答案 3 :(得分:0)

如果要将util.Date转换为sql.Date,可以在解析字符串后调用getTime方法,然后创建一个sql.Date对象。

Stringbirth = request.getParameter("birthdate");

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

long l = sdf.parse(birth).getTime(); 日期日期=新日期(l);