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"
}