BeanUtils.copyProperties日期转换器DateConverter
(2012-05-13 21:56:22)
标签:
java
web
it
在运用BeanUtils.copyProperties的时候,如果遇到日期和字符串彼此转换的,需要自定义日期转换器,这里提供了㈠个日期转换器,并且演示了其运用,同时演示了2种作用范围的用法:全局、局簿?局部范围的用法可以支持特别的情况——比如有2种矛盾的日期转换器需求的情况。
import java.text.ParseException;
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.ConvertUtilsBean;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.PropertyUtilsBean;
import org.apache.commons.lang.time.DateUtils;
public class DateConverter implements Converter {
public static void main(String[] a) {
D1 d1 = new D1();
d1.setDate("2008-11-21 15:45:59");
//私用的指建转换器
ConvertUtilsBean convertUtils = new ConvertUtilsBean();//
java自动转换的工具类
DateConverter dateConverter = new DateConverter();//
实力㈠个日期转换类
convertUtils.register(dateConverter, Date.class);// 注册㈠个日期类
convertUtils.register(dateConverter, String.class);// 注册㈠个字符类
BeanUtilsBean beanUtils = new BeanUtilsBean(convertUtils,
new PropertyUtilsBean());// 将这个转换工具类加载到beanUtils属性中
{
D2 d2 = new D2();
try {
beanUtils.copyProperties(d2, d1);
System.out.println(d2.getDate());
} catch (Exception e) {
System.err.println("1.没指建时间转换器");
}
}
//公用的那个因为没有指建转换器
{
D2 d2 = new D2();
try {
BeanUtils.copyProperties(d2, d1);
System.out.println(d2.getDate());
} catch (Exception e) {
System.err.println("2.没指建时间转换器");
}
}
//公用的指建转换器
{
ConvertUtils.register(dateConverter, Date.class);// 注册㈠个日期类
ConvertUtils.register(dateConverter, String.class);// 注册㈠个字符类
D2 d2 = new D2();
try {
BeanUtils.copyProperties(d2, d1);
System.out.println(d2.getDate());
} catch (Exception e) {
System.out.println("3.没指建时间转换器");
}
}
}
public Object convert(Class type, Object value) {
if (value == null) {
return null;
}
if (value instanceof Date) {
return value;
}
if (value instanceof Long) {
Long longValue = (Long) value;
return new Date(longValue.longValue());
}
if (value instanceof String) {
Date endTime = null;
try {
endTime = DateUtils.parseDate(value.toString(), new String[]
{
"yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mm" });
} catch (ParseException e) {
e.printStackTrace();
}
return endTime;
}
return null;
}
}
public class D1 {
private String date = null;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
import java.util.Date;
public class D2 {
private Date date = null;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。