001 002package io.vrap.rmf.base.client.utils.json.modules.serializers; 003 004import java.io.IOException; 005import java.time.ZoneOffset; 006import java.time.ZonedDateTime; 007import java.time.format.DateTimeFormatter; 008import java.time.format.DateTimeFormatterBuilder; 009 010import com.fasterxml.jackson.core.JsonGenerator; 011import com.fasterxml.jackson.databind.SerializerProvider; 012import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer; 013 014/** 015 * serializes a {@link ZonedDateTime} to {@link DateTimeFormatter#ISO_DATE} format 016 */ 017public final class ZonedDateTimeSerializer extends StdScalarSerializer<ZonedDateTime> { 018 019 static final long serialVersionUID = 0L; 020 private static final DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder().appendInstant(3).toFormatter(); 021 022 public ZonedDateTimeSerializer() { 023 super(ZonedDateTime.class); 024 } 025 026 @Override 027 public void serialize(final ZonedDateTime value, final JsonGenerator gen, final SerializerProvider arg2) 028 throws IOException { 029 gen.writeString(FORMATTER.format(value.withZoneSameInstant(ZoneOffset.UTC))); 030 } 031}