diff --git a/api/src/main/java/io/cloudevents/types/Time.java b/api/src/main/java/io/cloudevents/types/Time.java index fc0ce523..b5f64044 100644 --- a/api/src/main/java/io/cloudevents/types/Time.java +++ b/api/src/main/java/io/cloudevents/types/Time.java @@ -20,6 +20,8 @@ package io.cloudevents.types; import java.time.OffsetDateTime; import java.time.format.DateTimeParseException; +import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME; + /** * Utilities to handle the CloudEvent Attribute Timestamp type */ @@ -36,9 +38,9 @@ public final class Time { } /** - * Convert a {@link OffsetDateTime} to {@link String} + * Convert a {@link OffsetDateTime} to a RFC3339 compliant {@link String} */ public static String writeTime(OffsetDateTime time) throws DateTimeParseException { - return time.toString(); + return ISO_OFFSET_DATE_TIME.format(time); } } diff --git a/api/src/test/java/io/cloudevents/types/TimeTest.java b/api/src/test/java/io/cloudevents/types/TimeTest.java index 170e4965..4fca89d8 100644 --- a/api/src/test/java/io/cloudevents/types/TimeTest.java +++ b/api/src/test/java/io/cloudevents/types/TimeTest.java @@ -49,7 +49,7 @@ public class TimeTest { assertThat(Time.writeTime(OffsetDateTime.of( LocalDateTime.of(2020, 8, 3, 18, 10, 0, 0), ZoneOffset.ofHours(2) - ))).isEqualTo("2020-08-03T18:10+02:00"); + ))).isEqualTo("2020-08-03T18:10:00+02:00"); } public static Stream parseDateArguments() { diff --git a/formats/json-jackson/src/test/resources/v1/json_data_with_fractional_time.json b/formats/json-jackson/src/test/resources/v1/json_data_with_fractional_time.json index d21c6cb7..23a8fcb4 100644 --- a/formats/json-jackson/src/test/resources/v1/json_data_with_fractional_time.json +++ b/formats/json-jackson/src/test/resources/v1/json_data_with_fractional_time.json @@ -7,5 +7,5 @@ "datacontenttype": "application/json", "data": {}, "subject": "sub", - "time": "2018-04-26T14:48:09.123400Z" + "time": "2018-04-26T14:48:09.1234Z" }