如何使用 JAXB 将日期转换为巴西标准

How to convert date to the Brazilian standard using JAXB

我在使用 JAXB 转换 xml 对象时遇到问题。日期格式为 Sun Jan 30 16:08:23 BRT 18,但需要转换为巴西格式 12-08-2009 16:08:23

输入格式为 2009-08-12 16:08:23,需要输出 12-08-2009 16:08:23

转换 class JAXB:

public class DateAdapter extends XmlAdapter<String, Date> {

    Locale brasil = new Locale("pt", "BR");
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss", brasil);

    @Override
    public String marshal(Date v) throws Exception {
        return dateFormat.format(v);
    }

    @Override
    public Date unmarshal(String v) throws Exception, ParseException {
        return dateFormat.parse(v);
    }
}

我调用适配器的地方。

@XmlJavaTypeAdapter(DateAdapter.class)
private Date ultima_atualizacaoProduto;

您不能在解析和格式化时使用相同的 DateFormat。假设 30 是您问题中的年份,您可以按照以下方法进行操作:

public class DateAdapter extends XmlAdapter<String, Date> {

    private Locale brasil = new Locale("pt", "BR");
    private final SimpleDateFormat SD1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private final SimpleDateFormat SD2 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");

    @Override
    public String marshal(Date v) throws Exception {
        return SD2.format(v);
    }

    @Override
    public Date unmarshal(String v) throws Exception, ParseException {
        return SD1.parse(v);
    }
}

输入:

2009-08-12 16:08:23

输出:

12-08-2009 16:08:23

DB一般只使用UTC时间,用java8java.time.*.

传输转换

如果JDK<8,可以使用joda时间api。