我有用于JPA日期字段的DateAdapter:
public class DateAdapter extends XmlAdapter<String, Date> {
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss.SSS z");
@Override
public String marshal(Date v) throws Exception {
synchronized (dateFormat) {
return dateFormat.format(v);
}
}
@Override
public Date unmarshal(String v) throws Exception {
synchronized (dateFormat) {
return dateFormat.parse(v);
}
}
}
但是,如果我尝试解组字符串:
19990102T025555.000 GMT
unmarshal方法返回
1999年1月2日星期六05:55:55 MSK
但是我需要返回相同的东西,保存在base中。
答案 0 :(得分:0)
如果您能够并且愿意将Date
替换为ZonedDateTime
(来自Java 8),则可以执行以下操作:
private final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss.SSS z");
ZonedDateTime date = ZonedDateTime.parse("19990102T025555.000 GMT", dateFormat);
System.out.println(date); // 1999-01-02T02:55:55Z[GMT]
System.out.println(dateFormat.format(date)); // 19990102T025555.000 GMT