dateParser返回未删除的结果?

时间:2018-12-14 09:22:11

标签: java simpledateformat

我有用于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中。

1 个答案:

答案 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