Class ZonedDateTimeAsStringAttributeConverter

java.lang.Object
software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.ZonedDateTimeAsStringAttributeConverter
All Implemented Interfaces:
AttributeConverter<ZonedDateTime>

@ThreadSafe @Immutable public final class ZonedDateTimeAsStringAttributeConverter extends Object implements AttributeConverter<ZonedDateTime>
A converter between ZonedDateTime and AttributeValue.

This stores values in DynamoDB as a string.

Values are stored in a ISO-8601-like format, with the non-offset zone IDs being added at the end of the string in square brackets. If the zone ID offset has seconds, then they will also be included, even though this is not part of the ISO-8601 standard. For full ISO-8601 compliance, it is better to use OffsetDateTimes (without second-level precision in its offset) or Instants, assuming the time zone information is not strictly required.

Examples:

  • Instant.EPOCH.atZone(ZoneId.of("Europe/Paris")) is stored as an AttributeValue with the String "1970-01-01T01:00+01:00[Europe/Paris]"
  • OffsetDateTime.MIN.toZonedDateTime() is stored as an AttributeValue with the String "-999999999-01-01T00:00+18:00"
  • OffsetDateTime.MAX.toZonedDateTime() is stored as an AttributeValue with the String "+999999999-12-31T23:59:59.999999999-18:00"
  • Instant.EPOCH.atZone(ZoneOffset.UTC) is stored as an AttributeValue with the String "1970-01-01T00:00Z"
See OffsetDateTime for more details on the serialization format.

This converter can read any values written by itself, InstantAsStringAttributeConverter, or OffsetDateTimeAsStringAttributeConverter. Values written by Instant converters are treated as if they are in the UTC time zone.

This serialization is lexicographically orderable when the year is not negative.

This can be created via create().