@ThreadSafe @Immutable public final class OffsetDateTimeAsStringAttributeConverter extends Object implements AttributeConverter<OffsetDateTime>
OffsetDateTime and AttributeValue.
This stores values in DynamoDB as a string.
Values are stored in ISO-8601 format, with nanosecond precision. If the 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, ensure your OffsetDateTimes do
not have offsets at the precision level of seconds.
Examples:
OffsetDateTime.MIN is stored as
ItemAttributeValueMapper.fromString("-999999999-01-01T00:00:00+18:00")OffsetDateTime.MAX is stored as
ItemAttributeValueMapper.fromString("+999999999-12-31T23:59:59.999999999-18:00")Instant.EPOCH.atOffset(ZoneOffset.UTC).plusSeconds(1) is stored as
ItemAttributeValueMapper.fromString("1970-01-01T00:00:01Z")Instant.EPOCH.atOffset(ZoneOffset.UTC).minusSeconds(1) is stored as
ItemAttributeValueMapper.fromString("1969-12-31T23:59:59Z")Instant.EPOCH.atOffset(ZoneOffset.UTC).plusMillis(1) is stored as
ItemAttributeValueMapper.fromString("1970-01-01T00:00:00.001Z")Instant.EPOCH.atOffset(ZoneOffset.UTC).minusMillis(1) is stored as
ItemAttributeValueMapper.fromString("1969-12-31T23:59:59.999Z")Instant.EPOCH.atOffset(ZoneOffset.UTC).plusNanos(1) is stored as
ItemAttributeValueMapper.fromString("1970-01-01T00:00:00.000000001Z")Instant.EPOCH.atOffset(ZoneOffset.UTC).minusNanos(1) is stored as
ItemAttributeValueMapper.fromString("1969-12-31T23:59:59.999999999Z")
This converter can read any values written by itself, InstantAsIntegerAttributeConverter,
InstantAsStringAttributeConverter, or ZonedDateTimeAsStringAttributeConverter. Values written by
Instant converters are treated as if they are in the UTC time zone (and an offset of 0 seconds will be returned).
This can be created via create().
| Constructor and Description |
|---|
OffsetDateTimeAsStringAttributeConverter() |
| Modifier and Type | Method and Description |
|---|---|
AttributeValueType |
attributeValueType()
The
AttributeValueType that a converter stores and reads values
from DynamoDB via the AttributeValue class. |
static OffsetDateTimeAsStringAttributeConverter |
create() |
AttributeValue |
transformFrom(OffsetDateTime input)
Convert the provided Java object into an
AttributeValue. |
OffsetDateTime |
transformTo(AttributeValue input)
Convert the provided
AttributeValue into a Java object. |
EnhancedType<OffsetDateTime> |
type()
The type supported by this converter.
|
public OffsetDateTimeAsStringAttributeConverter()
public static OffsetDateTimeAsStringAttributeConverter create()
public EnhancedType<OffsetDateTime> type()
AttributeConvertertype in interface AttributeConverter<OffsetDateTime>public AttributeValueType attributeValueType()
AttributeConverterAttributeValueType that a converter stores and reads values
from DynamoDB via the AttributeValue class.attributeValueType in interface AttributeConverter<OffsetDateTime>public AttributeValue transformFrom(OffsetDateTime input)
AttributeConverterAttributeValue. This will raise a RuntimeException 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());
transformFrom in interface AttributeConverter<OffsetDateTime>public OffsetDateTime transformTo(AttributeValue input)
AttributeConverterAttributeValue into a Java object. This will raise a RuntimeException if the
conversion fails, or the input is null.
Example:
{@code
InstantAsStringAttributeConverter converter = InstantAsStringAttributeConverter.create();
assertEquals(converter.transformTo(EnhancedAttributeValue.fromString("1970-01-01T00:00:00Z").toAttributeValue()),
Instant.EPOCH);
transformTo in interface AttributeConverter<OffsetDateTime>Copyright © 2020. All rights reserved.