Skip to content

Commit

Permalink
Add support to parse timestamps with +hh:mm:ss offset.
Browse files Browse the repository at this point in the history
[resolves #509][#510]
  • Loading branch information
dmitrii.khlopkov authored and mp911de committed May 17, 2022
1 parent faff3cc commit d748e92
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class PostgresqlDateTimeFormatter {
.appendFraction(NANO_OF_SECOND, 0, 9, true)
.optionalEnd()
.optionalStart()
.appendOffset("+HH:mm", "+00:00")
.appendOffset("+HH:mm:ss", "+00:00:00")
.optionalEnd()
.toFormatter();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ void decodeFromTimestampWithTimezone() {
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2018-11-05T00:20:25.039883+09:00[Asia/Tokyo]");
Instant instant = zonedDateTime.toInstant();

assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+09:00:00"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
.isEqualTo(instant);
assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+09:00"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
.isEqualTo(instant);
assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+09"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
Expand All @@ -77,6 +79,8 @@ void decodeFromTimestampWithTimezoneUTC() {
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2018-11-05T00:20:25.039883+00:00");
Instant instant = zonedDateTime.toInstant();

assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+00:00:00"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
.isEqualTo(instant);
assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+00:00"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
.isEqualTo(instant);
assertThat(new InstantCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+00"), TIMESTAMPTZ.getObjectId(), FORMAT_TEXT, Instant.class))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ void decodeUTC() {
.isEqualTo(localDateTime);
assertThat(new LocalDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:06:31.700426+00"), dataType, FORMAT_TEXT, LocalDateTime.class))
.isEqualTo(localDateTime);
assertThat(new LocalDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:06:31.700426+00:00:00"), dataType, FORMAT_TEXT, LocalDateTime.class))
.isEqualTo(localDateTime);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ void decode() {

assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+09:00"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+09:00:00"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+09"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
}
Expand All @@ -62,6 +64,8 @@ void decodeUTC() {

assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+00:00"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+00:00:00"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
assertThat(new OffsetDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:16:00.899797+00"), dataType, FORMAT_TEXT, OffsetDateTime.class))
.isEqualTo(offsetDateTime);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ void decode() {
.isEqualTo(zonedDateTime);
assertThat(new ZonedDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+09"), dataType, FORMAT_TEXT, ZonedDateTime.class))
.isEqualTo(zonedDateTime);
assertThat(new ZonedDateTimeCodec(TEST).decode(encode(TEST, "2018-11-05 00:20:25.039883+09:00:00"), dataType, FORMAT_TEXT, ZonedDateTime.class))
.isEqualTo(zonedDateTime);
}

@Test
Expand Down

0 comments on commit d748e92

Please sign in to comment.