{"id":13565429,"url":"https://github.com/tailrocks/graphql-java-datetime","last_synced_at":"2025-05-13T13:23:35.133Z","repository":{"id":37824476,"uuid":"96673192","full_name":"tailrocks/graphql-java-datetime","owner":"tailrocks","description":"GraphQL ISO Date is a set of RFC 3339 compliant date/time scalar types to be used with graphql-java.","archived":false,"fork":false,"pushed_at":"2025-04-29T13:41:56.000Z","size":1339,"stargazers_count":149,"open_issues_count":3,"forks_count":28,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-29T14:48:50.554Z","etag":null,"topics":["date","datetime","graphql","graphql-java","scalars","time"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tailrocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-07-09T09:10:22.000Z","updated_at":"2025-04-29T13:41:21.000Z","dependencies_parsed_at":"2023-10-21T17:25:37.094Z","dependency_job_id":"4794f2d9-65b9-477e-b6cc-7c86ea0673f7","html_url":"https://github.com/tailrocks/graphql-java-datetime","commit_stats":null,"previous_names":["donbeave/graphql-java-datetime"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrocks%2Fgraphql-java-datetime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrocks%2Fgraphql-java-datetime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrocks%2Fgraphql-java-datetime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrocks%2Fgraphql-java-datetime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailrocks","download_url":"https://codeload.github.com/tailrocks/graphql-java-datetime/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251856996,"owners_count":21655119,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["date","datetime","graphql","graphql-java","scalars","time"],"created_at":"2024-08-01T13:01:46.777Z","updated_at":"2025-05-13T13:23:35.101Z","avatar_url":"https://github.com/tailrocks.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# graphql-java-datetime\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/tailrocks/graphql-java-datetime/blob/master/LICENSE) \n[![Latest Release](https://img.shields.io/maven-central/v/com.tailrocks.graphql/graphql-java-datetime)](https://maven-badges.herokuapp.com/maven-central/com.tailrocks.graphql/graphql-java-datetime/)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/tailrocks/graphql-java-datetime/pulls)\n\nGraphQL ISO Date is a set of RFC 3339 compliant date/time scalar types to be used with\n[graphql-java](https://github.com/graphql-java/graphql-java).\n\n\n# Summary\n\nA set of ISO 33601, RFC 3339 compatible date time scalars for GraphQL Java implementation ([graphql-java](https://github.com/graphql-java/graphql-java)), as well as starters for\n- GraphQL Java Kickstart [graphql-java-kickstart](https://www.graphql-java-kickstart.com/spring-boot/)\n- Netflix DGS Framework [dgs-framework](https://netflix.github.io/dgs/)\n- Spring GraphQL [spring-graphql](https://spring.io/projects/spring-graphql)\n\n# Serialization\n\n**java.util.Date**, **java.time.LocalDate**, **java.time.LocalDateTime**\n\n| Format                       | JSON String              |\n|:-----------------------------|:-------------------------|\n| yyyy-MM-dd'T'HH:MM:ss.SSS'Z' | 2017-07-09T13:14:45.947Z |\n| yyyy-MM-dd'T'HH:MM:ss'Z'     | 2017-07-09T11:54:42Z     |\n| yyyy-MM-dd'T'HH:MM:ss        | 2017-07-09T11:54:42      |\n| yyyy-MM-dd                   | 2017-07-09               |\n\n**java.time.LocalTime**\n\n| Format       | JSON String  |\n|:-------------|:-------------|\n| HH:MM:ss.SSS | 17:59:59.129 |\n| HH:MM:ss     | 17:59:59     |\n| HH:MM        | 17:59        |\n\n**java.time.Duration**\n\n| JSON String      |\n|:-----------------|\n| PT1H30M          |\n| P1DT3H30M        |\n| P3Y6M4DT12H30M5S |\n\n# Usage\n\n## Spring Boot\n\nThis library supports the following popular graphql-java framework:\n- GraphQL Java Kickstart [graphql-java-kickstart](https://www.graphql-java-kickstart.com/spring-boot/)\n- Netflix DGS Framework [dgs-framework](https://netflix.github.io/dgs/)\n- Spring GraphQL [spring-graphql](https://spring.io/projects/spring-graphql)\n\nAdd one of the following starters according to your project.\n\n### Installation\n\n#### Maven\n\nAdd the following to your `pom.xml`:\n\nfor **GraphQL Java Kickstart**:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.tailrocks.graphql\u003c/groupId\u003e\n    \u003cartifactId\u003egraphql-datetime-kickstart-spring-boot-starter\u003c/artifactId\u003e\n    \u003cversion\u003e6.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nfor **Netflix DGS**:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.tailrocks.graphql\u003c/groupId\u003e\n    \u003cartifactId\u003egraphql-datetime-dgs-starter\u003c/artifactId\u003e\n    \u003cversion\u003e6.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nfor **Spring GraphQL**:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.tailrocks.graphql\u003c/groupId\u003e\n    \u003cartifactId\u003egraphql-datetime-spring-boot-starter\u003c/artifactId\u003e\n    \u003cversion\u003e6.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n#### Gradle\n\nAdd the following to your `build.gradle`:\n\nfor **GraphQL Java Kickstart (Spring Boot)**:\n\n```groovy\nimplementation(\"com.tailrocks.graphql:graphql-datetime-kickstart-spring-boot-starter:6.0.0\")\n```\n\nfor **DGS**:\n\n```groovy\nimplementation(\"com.tailrocks.graphql:graphql-datetime-dgs-starter:6.0.0\")\n```\n\nfor **Spring GraphQL**:\n\n```groovy\nimplementation(\"com.tailrocks.graphql:graphql-datetime-spring-boot-starter:6.0.0\")\n```\n\n### Scalars\n\nAdd these scalars to your `.graphqls` schema file:\n\n```graphql\n# java.util.Date implementation\nscalar Date\n\n# java.time.LocalDate implementation\nscalar LocalDate\n\n# java.time.LocalDateTime implementation\nscalar LocalDateTime\n\n# java.time.LocalTime implementation\nscalar LocalTime\n\n# java.time.OffsetDateTime implementation\nscalar OffsetDateTime\n\n# java.time.YearMonth implementation\nscalar YearMonth\n\n# java.time.Duration implementation\nscalar Duration\n```\n\nYou can rename the scalar however you want by simply adding the following properties to your application.yaml:\n\n```yaml\ngraphql:\n  datetime:\n    scalars:\n      date:\n        scalar-name: MyDate\n      local-date:\n        scalar-name: MyLocalDate\n      local-date-time:\n        scalar-name: MyLocalDateTime\n      local-time:\n        scalar-name: MyLocalTime\n      offset-date-time:\n        scalar-name: MyOffsetDateTime\n      year-month:\n        scalar-name: MyYearMonth\n      duration:\n        scalar-name: MyDuration\n```\n\nA custom format can be set for LocalDate and LocalDateTime only using the following properties in application.yaml\n\n```yaml\ngraphql:\n  datetime:\n    scalars:\n      local-date:\n        format: MM/dd/yyyy\n      local-date-time:\n        format: yyyy-MM-dd'T'HH:mm:ss\n```\n\nYou can enable automatic zone conversion by adding the following property to your application.yaml. This will\nautomatically convert between UTC and the default TimeZone for `LocalDateTime`:\n\n```yaml\ngraphql:\n  datetime:\n    scalars:\n      zone-conversion-enabled: true\n```\n\nIf using OffsetDateTime in order to present the offset and disable the automatic convertion to UTC from Jackson you\nshould set to your application.yml the following:\n\n```yaml\nspring:\n  jackson:\n    deserialization:\n      adjust-dates-to-context-time-zone: false\n```\n\n### Sample\n\nNow you can use these scalars in your application. Here are graphql-datetime spring boot sample applications:\n\n- **webmvc:**\n  - dgs: [sample-graphql-datetime-dgs-webmvc](samples/dgs-webmvc)\n  - kickstart: [sample-graphql-datetime-kickstart-webmvc](samples/kickstart-webmvc)\n  - spring-graphql: [sample-graphql-datetime-spring-boot-webmvc](samples/spring-boot-webmvc)\n- **webflux:** \n  - kickstart: [sample-graphql-datetime-kickstart-webflux](samples/kickstart-webflux)\n\n## Bugs\n\nTo report any bug, please use the project [Issues](https://github.com/tailrocks/graphql-java-datetime/issues/new) section\non GitHub.\n\n## Contributing\n\nPlease contribute using [Github Flow](https://guides.github.com/introduction/flow/). Create a branch, add commits,\nand [open a pull request](https://github.com/tailrocks/graphql-java-datetime/compare/).\n\n## License\n\nCopyright © 2017-2023 [Alexey Zhokhov](http://www.zhokhov.com). All rights reserved.\n\nThis project is licensed under the Apache License, Version 2.0 - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailrocks%2Fgraphql-java-datetime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailrocks%2Fgraphql-java-datetime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailrocks%2Fgraphql-java-datetime/lists"}