{! ! @Override! public LocalDate unmarshal(XMLGregorianCalendar value) throws Exception {! int timezone = value.getTimezone();! ZoneOffset offset = ZoneOffset.ofTotalSeconds(timezone * 60);! return OffsetDateTime.of(value.getYear(), value.getMonth(),! value.getDay(), 0, 0, 0, 0, offset).toLocalDate();! }! ! @Override! public XMLGregorianCalendar marshal(LocalDate value) throws Exception {! ZoneOffset offset = OffsetDateTime.now().getOffset();! int timezone = offset.getTotalSeconds() / 60;! return DatatypeFactory.newInstance().newXMLGregorianCalendarDate(! value.getYear(), value.getMonthValue(), value.getDayOfMonth(),! timezone);! }! ! }