Russo-Ukrainian War which started in Feb 2014 and escalated since 8 years into a full-scale war against Ukraine on 24th of February, became a top cause in the international main stream nowadays. The Ukrainians fight and die to save their democracy, freedom, and sovereignty.
Please take action to stop the war in Ukraine, there are many ways how you can help: https://war.ukraine.ua
GraphQL ISO Date is a set of RFC 3339 compliant date/time scalar types to be used with graphql-java.
A set of ISO 33601, RFC 3339 compatible date time scalars for GraphQL Java implementation (graphql-java), as well as starters for
- GraphQL Java Kickstart graphql-java-kickstart
- Netflix DGS Framework dgs-framework
- Spring GraphQL spring-graphql
java.util.Date, java.time.LocalDate, java.time.LocalDateTime
| Format | JSON String |
|---|---|
| yyyy-MM-dd'T'HH:MM:ss.SSS'Z' | 2017-07-09T13:14:45.947Z |
| yyyy-MM-dd'T'HH:MM:ss'Z' | 2017-07-09T11:54:42Z |
| yyyy-MM-dd'T'HH:MM:ss | 2017-07-09T11:54:42 |
| yyyy-MM-dd | 2017-07-09 |
java.time.LocalTime
| Format | JSON String |
|---|---|
| HH:MM:ss.SSS | 17:59:59.129 |
| HH:MM:ss | 17:59:59 |
| HH:MM | 17:59 |
java.time.Duration
| JSON String |
|---|
| PT1H30M |
| P1DT3H30M |
| P3Y6M4DT12H30M5S |
This library supports the following popular graphql-java framework:
- GraphQL Java Kickstart graphql-java-kickstart
- Netflix DGS Framework dgs-framework
- Spring GraphQL spring-graphql
Add one of the following starters according to your project.
Add the following to your pom.xml:
for GraphQL Java Kickstart:
Note: requires graphql-java:17.x until graphql-java-kickstart:graphql-spring-boot:13.x is released
<dependency> <groupId>com.tailrocks.graphql</groupId> <artifactId>graphql-datetime-kickstart-spring-boot-starter</artifactId> <version>5.0.0</version> </dependency>for Netflix DGS:
<dependency> <groupId>com.tailrocks.graphql</groupId> <artifactId>graphql-datetime-dgs-starter</artifactId> <version>5.0.0</version> </dependency>for Spring GraphQL:
<dependency> <groupId>com.tailrocks.graphql</groupId> <artifactId>graphql-datetime-spring-boot-starter</artifactId> <version>5.0.0</version> </dependency>Add the following to your build.gradle:
for GraphQL Java Kickstart (Spring Boot):
implementation("com.tailrocks.graphql:graphql-datetime-kickstart-spring-boot-starter:5.0.0")for DGS:
implementation("com.tailrocks.graphql:graphql-datetime-dgs-starter:5.0.0")for Spring GraphQL:
implementation("com.tailrocks.graphql:graphql-datetime-spring-boot-starter:5.0.0")Add these scalars to your .graphqls schema file:
# java.util.Date implementation scalar Date # java.time.LocalDate implementation scalar LocalDate # java.time.LocalDateTime implementation scalar LocalDateTime # java.time.LocalTime implementation scalar LocalTime # java.time.OffsetDateTime implementation scalar OffsetDateTime # java.time.YearMonth implementation scalar YearMonth # java.time.Duration implementation scalar DurationYou can rename the scalar however you want by simply adding the following properties to your application.yaml:
graphql: datetime: scalars: date: scalar-name: MyDate local-date: scalar-name: MyLocalDate local-date-time: scalar-name: MyLocalDateTime local-time: scalar-name: MyLocalTime offset-date-time: scalar-name: MyOffsetDateTime year-month: scalar-name: MyYearMonth duration: scalar-name: MyDurationA custom format can be set for LocalDate and LocalDateTime only using the following properties in application.yaml
graphql: datetime: scalars: local-date: format: MM/dd/yyyy local-date-time: format: yyyy-MM-dd'T'HH:mm:ssYou can enable automatic zone conversion by adding the following property to your application.yaml. This will automatically convert between UTC and the default TimeZone for LocalDateTime:
graphql: datetime: scalars: zone-conversion-enabled: trueIf using OffsetDateTime in order to present the offset and disable the automatic convertion to UTC from Jackson you should set to your application.yml the following:
spring: jackson: deserialization: adjust-dates-to-context-time-zone: falseNow you can use these scalars in your application. Here are graphql-datetime spring boot sample applications:
- webmvc:
- dgs: sample-graphql-datetime-dgs-webmvc
- kickstart: sample-graphql-datetime-kickstart-webmvc
- spring-graphql: sample-graphql-datetime-spring-boot-webmvc
- webflux:
- kickstart: sample-graphql-datetime-kickstart-webflux
To report any bug, please use the project Issues section on GitHub.
Please contribute using Github Flow. Create a branch, add commits, and open a pull request.
Copyright © 2017-2022 Alexey Zhokhov. All rights reserved.
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.