首页 > 解决方案 > 在 java 中创建通用的 dateformatter 模式

问题描述

我正在使用下面的代码

公共类 DateAdapter 扩展 XmlAdapter<String, XMLGregorianCalendar> {

private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");

@Override
public XMLGregorianCalendar unmarshal(String v) throws Exception {
    Date date = dateFormat.parse(v);

    GregorianCalendar gregory = new GregorianCalendar();
    gregory.setTime(date);
    XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregory);
    return calendar;
}

@Override
public String marshal(XMLGregorianCalendar v) throws Exception {
    synchronized (dateFormat) {
        return specialFormatForXmlGregorianCalander(v);
    }
}

// Because you cannot format an XMLGregorianCalender typyou need to generate a
// GregorianCalender from it first
private String specialFormatForXmlGregorianCalander(XMLGregorianCalendar calander) {
    // Convert from XMLGregorianCalander to GregorianCalander
    GregorianCalendar gCalender = calander.toGregorianCalendar();
    // Get the date
    java.util.Date date = gCalender.getTime();
    // define the type of calendar to be GegorianCalander
    dateFormat.setCalendar(gCalender);
    // Return the string version
    return dateFormat.format(date);
}

}

我想创建通用日期适配器,它将接受每种传入的日期格式并应该成功解析它。编组和解组时应使用相同的日期格式。

标签: java-8jaxb

解决方案


推荐阅读