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 betweenZonedDateTime
andAttributeValue
.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
OffsetDateTime
s (without second-level precision in its offset) orInstant
s, 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"
OffsetDateTime
for more details on the serialization format.This converter can read any values written by itself,
InstantAsStringAttributeConverter
, orOffsetDateTimeAsStringAttributeConverter
. Values written byInstant
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()
.
-
-
Constructor Summary
Constructors Constructor Description ZonedDateTimeAsStringAttributeConverter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description AttributeValueType
attributeValueType()
TheAttributeValueType
that a converter stores and reads values from DynamoDB via theAttributeValue
class.static ZonedDateTimeAsStringAttributeConverter
create()
AttributeValue
transformFrom(ZonedDateTime input)
Convert the provided Java object into anAttributeValue
.ZonedDateTime
transformTo(AttributeValue input)
Convert the providedAttributeValue
into a Java object.EnhancedType<ZonedDateTime>
type()
The type supported by this converter.
-
-
-
Method Detail
-
create
public static ZonedDateTimeAsStringAttributeConverter create()
-
type
public EnhancedType<ZonedDateTime> type()
Description copied from interface:AttributeConverter
The type supported by this converter.- Specified by:
type
in interfaceAttributeConverter<ZonedDateTime>
-
attributeValueType
public AttributeValueType attributeValueType()
Description copied from interface:AttributeConverter
TheAttributeValueType
that a converter stores and reads values from DynamoDB via theAttributeValue
class.- Specified by:
attributeValueType
in interfaceAttributeConverter<ZonedDateTime>
-
transformFrom
public AttributeValue transformFrom(ZonedDateTime input)
Description copied from interface:AttributeConverter
Convert the provided Java object into anAttributeValue
. This will raise aRuntimeException
if the conversion fails, or the input is null.Example:
InstantAsStringAttributeConverter converter = InstantAsStringAttributeConverter.create(); assertEquals(converter.transformFrom(Instant.EPOCH), EnhancedAttributeValue.fromString("1970-01-01T00:00:00Z").toAttributeValue());
- Specified by:
transformFrom
in interfaceAttributeConverter<ZonedDateTime>
-
transformTo
public ZonedDateTime transformTo(AttributeValue input)
Description copied from interface:AttributeConverter
Convert the providedAttributeValue
into a Java object. This will raise aRuntimeException
if the conversion fails, or the input is null.Example:
InstantAsStringAttributeConverter converter = InstantAsStringAttributeConverter.create(); assertEquals(converter.transformTo(EnhancedAttributeValue.fromString("1970-01-01T00:00:00Z").toAttributeValue()), Instant.EPOCH);
- Specified by:
transformTo
in interfaceAttributeConverter<ZonedDateTime>
-
-