dateParser возвращает не ожидаемый результат? - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть DateAdapter для поля даты JPA:

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);
        }
    }
}

Но если я попробую unmarshal String:

19990102T025555.000 GMT

unmarshalметод возвращает

сб 02 января 05:55:55 MSK 1999

Но мне нужно вернуть то же самое, что сохранено в базе.

1 Ответ

0 голосов
/ 14 декабря 2018

Если вы можете и хотите заменить 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
...