您的位置:首页 > 编程语言 > Go语言

ConvertUtils.register注册Date转XMLGregorianCalendar的转换器

2014-02-21 17:57 645 查看
最近遇到BeanUtils.copyProperties(),把Date类型数据copy到XMLGregorianCalendar类型的字段上,以下是我写的转换器,把这个注册到ConvertUtils就可以使用了

import org.apache.commons.beanutils.*;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.util.Calendar;

import java.util.Date;

import javax.xml.datatype.DatatypeFactory;

import javax.xml.datatype.XMLGregorianCalendar;

public class XMLGregorianCalendarConverter implements Converter {

private Logger logger = LoggerFactory.getLogger(this.getClass());

public Object convert(Class arg0, Object arg1) {

if(arg1 instanceof XMLGregorianCalendar){

return this.convert(arg0, (XMLGregorianCalendar)arg1);

}else{

return this.convert(arg0, (Date)arg1);

}

}

public Calendar convert(Class calendarType, XMLGregorianCalendar xmlCalendar){

return xmlCalendar.toGregorianCalendar();

}

public XMLGregorianCalendar convert(Class<?> xmlCalendarType, Date date){

if(date == null) {

return null;

}

Calendar cal = Calendar.getInstance();

cal.setTime(date);

XMLGregorianCalendar dateType = null;

try {

DatatypeFactory dtf = DatatypeFactory.newInstance();

dateType = dtf.newXMLGregorianCalendar();

dateType.setYear(cal.get(Calendar.YEAR));

dateType.setMonth(cal.get(Calendar.MONTH)+1);

dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));

dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));

dateType.setMinute(cal.get(Calendar.MINUTE));

dateType.setSecond(cal.get(Calendar.SECOND));

} catch (Exception e) {

e.printStackTrace();

}

return dateType;

}

}

只要在BeanUtils.copyProperties(实体, 实体)前

加上ConvertUtils.register(new XMLGregorianCalendarConverter(), XMLGregorianCalendar.class);就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: