diff --git a/src/main/java/graphql/scalars/datetime/DateTimeScalar.java b/src/main/java/graphql/scalars/datetime/DateTimeScalar.java index 20fd345..06b3aa3 100644 --- a/src/main/java/graphql/scalars/datetime/DateTimeScalar.java +++ b/src/main/java/graphql/scalars/datetime/DateTimeScalar.java @@ -13,10 +13,16 @@ import java.time.OffsetDateTime; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeParseException; import java.util.function.Function; import static graphql.scalars.util.Kit.typeName; +import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; +import static java.time.temporal.ChronoField.HOUR_OF_DAY; +import static java.time.temporal.ChronoField.MINUTE_OF_HOUR; +import static java.time.temporal.ChronoField.NANO_OF_SECOND; +import static java.time.temporal.ChronoField.SECOND_OF_MINUTE; /** * Access this via {@link graphql.scalars.ExtendedScalars#DateTime} @@ -27,6 +33,7 @@ public final class DateTimeScalar { public static final GraphQLScalarType INSTANCE; private DateTimeScalar() {} + private static final DateTimeFormatter customOutputFormatter = getCustomDateTimeFormatter(); static { Coercing coercing = new Coercing() { @@ -45,7 +52,7 @@ public String serialize(Object input) throws CoercingSerializeException { ); } try { - return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(offsetDateTime); + return customOutputFormatter.format(offsetDateTime); } catch (DateTimeException e) { throw new CoercingSerializeException( "Unable to turn TemporalAccessor into OffsetDateTime because of : '" + e.getMessage() + "'." @@ -102,4 +109,20 @@ private OffsetDateTime parseOffsetDateTime(String s, Function