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]
}
现象:
当输入页面中含有日期如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]
}
相关文章推荐
- CXF webservice JAXB 处理复杂数据类型方法
- 数据库查回来数据封装成Javabean再转json(有Date类型不能转json处理方法)
- js处理date类型的各种方法
- freemarker页面String类型的日期格式,实体类Date类型的----------处理方法
- SpringMVC处理Date类型的成员变量方法
- oracle数据库对date字段类型存在空值进行排序的处理方法
- Struts1.x处理Date类型数据的方法
- oracle数据库对date字段类型存在空值进行排序的处理方法
- SpringMVC处理Date类型的成员变量方法
- Extjs中Date类型处理的方法
- 处理CLOB,BLOB,Date,Timestamp数据类型的方法
- SpringMVC处理Date类型的属性的方法
- 关于Date类型的常见问题及处理方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- oracle date 类型字段的处理方法
- SpringMVC处理Date类型的成员变量方法
- SpringMVC处理Date类型的成员变量方法
- SpringMVC处理Date类型的成员变量方法
- java 直接返回Date类型数据给前端,前端的处理方法
- SpringMVC处理Date类型的成员变量方法