package org.trade.persistent.dao.converter; import java.time.Instant; import java.time.ZonedDateTime; import java.util.Date; import javax.persistence.AttributeConverter; import javax.persistence.Converter; import org.trade.core.util.TradingCalendar; @Converter(autoApply = true) public class ZonedDateTimeConverter implements AttributeConverter<ZonedDateTime, Date> { public Date convertToDatabaseColumn(ZonedDateTime date) { if (date == null) { return null; } final Instant instant = date.toInstant(); return ((Date) Date.from(instant)); } public ZonedDateTime convertToEntityAttribute(Date value) { if (value == null) { return null; } final Instant instant = Instant.ofEpochMilli(value.getTime()); return ZonedDateTime.ofInstant(instant, TradingCalendar.MKT_TIMEZONE); } }