您的位置:首页 > 其它

web中Date类型的处理方法

2008-05-04 09:04 447 查看
[align=left]一:Struts Form中Date类型之“argument type mismatch”错误解决方法[/align]
现象:
当输入页面中含有日期如2008-01-01时,如果Form中对于的字段为Date类型,则会出现“argument type mismatch”错误。

原因:
Struts的ActionServlet在接受到页面的请求后,会调用RequestUtils.populate方法对Form进行填值,而此方法又调用到BeanUtils.populate方法,而该方法进行填值时对不同类型的会进行转换,而默认的ActionServlet并没有注册相应的转换函数,所以会导致转换出现错误。

解决方法:
1.实现自定义的ActionServlet方法并在里面注册转换函数。
2.Form中的日期类型使用String类型,把转换动作放在Action中处理(即在Action中对Form->POJO转换时处理),可以在Action基类中注册类型转换类。
二:String类型和Date类型的互相转换
[align=left]//STRING到日期[/align]
[align=left] publicstatic java.sql.Date stringToDate(String dateStr) [/align]
[align=left] { [/align]
[align=left] return java.sql.Date.valueOf(dateStr); [/align]
[align=left] } [/align]
[align=left] //日期到STRING [/align]
[align=left] publicstatic String dateToString(java.sql.Date datee) [/align]
[align=left] { [/align]
[align=left] return datee.toString(); [/align]
}
注意:在转换的代码中定义java.util.Date类型的变量!
因为java.sql.Date类型是java.util.Date类型的子类。
子类可以自动赋值给父类。

三:获取当前时间
[align=left]import java.text.ParseException;[/align]
[align=left]import java.text.SimpleDateFormat;[/align]
[align=left]import java.util.Date;[/align]
[align=left]import java.util.GregorianCalendar;[/align]
[align=left] [/align]
[align=left]publicclass DateTime {[/align]
[align=left] [/align]
[align=left] public static Date getDatetime(){ [/align]
[align=left] SimpleDateFormat dateFormatter =new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");[/align]
[align=left] GregorianCalendar gc=new GregorianCalendar();[/align]
[align=left] Date date=new Date();; [/align]
[align=left] try {[/align]
[align=left] date =dateFormatter.parse((dateFormatter.format(gc.getTime()))); [/align]
[align=left] } catch (ParseException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return date;[/align]
[align=left] } [/align]
[align=left] [/align]
[align=left] }[/align]

四:验证日期类型格式
[align=left]import java.util.Date; [/align]
[align=left]import java.util.regex.Matcher; [/align]
[align=left]import java.util.regex.Pattern; [/align]
[align=left] [/align]
[align=left]publicclass DateV {[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] publicstaticboolean isValidDate(String sDate) { [/align]
[align=left] String datePattern1 = "//d{4}-//d{2}-//d{2}"; [/align]
[align=left] String datePattern2 = "^((//d{2}(([02468][048])|([13579][26]))"[/align]
[align=left] + "[//-/////s]?((((0?[13578])|(1[02]))[//-/////s]?((0?[1-9])|([1-2][0-9])|"[/align]
[align=left] + "(3[01])))|(((0?[469])|(11))[//-/////s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[//-/////s]?"[/align]
[align=left] + "((0?[1-9])|([1-2][0-9])))))|(//d{2}(([02468][1235679])|([13579][01345789]))[//-/////s]?("[/align]
[align=left] + "(((0?[13578])|(1[02]))[//-/////s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[//-/////s]?"[/align]
[align=left] + "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[//-/////s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; [/align]
[align=left] if ((sDate != null)) { [/align]
[align=left] Pattern pattern = Pattern.compile(datePattern1); [/align]
[align=left] Matcher match = pattern.matcher(sDate); [/align]
[align=left] if (match.matches()) { [/align]
[align=left] pattern = Pattern.compile(datePattern2); [/align]
[align=left] match = pattern.matcher(sDate); [/align]
[align=left] return match.matches();[/align]
[align=left] } [/align]
[align=left] else { [/align]
[align=left] returnfalse;[/align]
[align=left] } [/align]
[align=left] } [/align]
[align=left] returnfalse;[/align]
[align=left] } [/align]
[align=left] [/align]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐