package com.fasterxml.jackson.datatype.jsr310.ser; import com.fasterxml.jackson.annotation.JsonFormat; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; public class OffsetDateTimeSerializer extends InstantSerializerBase<OffsetDateTime> { public static final OffsetDateTimeSerializer INSTANCE = new OffsetDateTimeSerializer(); protected OffsetDateTimeSerializer() { super(OffsetDateTime.class, dt -> dt.toInstant().toEpochMilli(), OffsetDateTime::toEpochSecond, OffsetDateTime::getNano, DateTimeFormatter.ISO_OFFSET_DATE_TIME); } protected OffsetDateTimeSerializer(OffsetDateTimeSerializer base, Boolean useTimestamp, DateTimeFormatter formatter) { this(base, formatter, useTimestamp, null); } protected OffsetDateTimeSerializer(OffsetDateTimeSerializer base, DateTimeFormatter formatter, Boolean useTimestamp, Boolean useNanoseconds) { super(base, formatter, useTimestamp, useNanoseconds); } @Override protected JSR310FormattedSerializerBase<?> withFormat(DateTimeFormatter formatter, Boolean useTimestamp, JsonFormat.Shape shape) { return new OffsetDateTimeSerializer(this, useTimestamp, formatter); } @Override protected JSR310FormattedSerializerBase<?> withFeatures(Boolean writeZoneId, Boolean writeNanoseconds) { return new OffsetDateTimeSerializer(this, _formatter, _useTimestamp, writeNanoseconds); } }