如何使用 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。
我在使用 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。