{"id":16284975,"url":"https://github.com/goodforgod/jackson-datetime-configuration","last_synced_at":"2025-04-09T00:07:16.040Z","repository":{"id":57735522,"uuid":"446591148","full_name":"GoodforGod/jackson-datetime-configuration","owner":"GoodforGod","description":"⚙️ Jackson DateTime module with Configuration for java.time.*","archived":false,"fork":false,"pushed_at":"2023-02-23T06:48:36.000Z","size":101,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T07:01:48.662Z","etag":null,"topics":["configuration","date","datetime","jackson","jackson-module","java","jsr310","module","time"],"latest_commit_sha":null,"homepage":"","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/GoodforGod.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}},"created_at":"2022-01-10T21:44:09.000Z","updated_at":"2023-02-26T09:23:08.000Z","dependencies_parsed_at":"2024-10-10T19:21:53.352Z","dependency_job_id":"a77a4541-27d4-4514-85a8-9bcfb54aa39d","html_url":"https://github.com/GoodforGod/jackson-datetime-configuration","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":"GoodforGod/java-library-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fjackson-datetime-configuration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fjackson-datetime-configuration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fjackson-datetime-configuration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fjackson-datetime-configuration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoodforGod","download_url":"https://codeload.github.com/GoodforGod/jackson-datetime-configuration/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947860,"owners_count":21023066,"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":["configuration","date","datetime","jackson","jackson-module","java","jsr310","module","time"],"created_at":"2024-10-10T19:21:46.585Z","updated_at":"2025-04-09T00:07:16.020Z","avatar_url":"https://github.com/GoodforGod.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jackson DateTime Configuration\n\n![Java CI](https://github.com/GoodforGod/jackson-datetime-configuration/workflows/Java%20CI/badge.svg)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_jackson-datetime-configuration\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=GoodforGod_jackson-datetime-configuration)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_jackson-datetime-configuration\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=GoodforGod_jackson-datetime-configuration)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_jackson-datetime-configuration\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=GoodforGod_jackson-datetime-configuration)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=GoodforGod_jackson-datetime-configuration\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=GoodforGod_jackson-datetime-configuration)\n\nJackson DateTime module for [java.time.*](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/package-summary.html) package with proper Configuration.\n\nLibrary try to fix poor [standard Jackson JSR310 DateTime module](https://github.com/FasterXML/jackson-modules-java8/blob/2.14/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/JavaTimeModule.java),\nnow you can change formatters for Date/Times\nand library is using [ISO8601 with millis precision](https://goodforgod.dev/posts/2/) formatters by default.\n\nFeatures:\n- Default configuration with formatters [ISO8601 with millis precision](https://goodforgod.dev/posts/2/)\n- Module configuration with getter\\setters (can easily be used in framework configurations)\n\n## Dependency :rocket:\n\nCompatible with Java 8+.\n\n**Gradle**\n```groovy\ndependencies {\n    implementation \"io.goodforgod:jackson-datetime-configuration:2.0.0\"\n}\n```\n\n**Maven**\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.goodforgod\u003c/groupId\u003e\n    \u003cartifactId\u003ejackson-datetime-configuration\u003c/artifactId\u003e\n    \u003cversion\u003e2.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Configuration\n\nJavaTimeModule library provides uses same [Package.VERSION](https://github.com/GoodforGod/jackson-datetime-configuration/blob/master/src/main/java/io/goodforgod/jackson/module/datetime/configuration/JavaTimeModule.java#L41)\nas [Jackson Module](https://github.com/FasterXML/jackson-modules-java8/blob/2.14/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/JavaTimeModule.java#L114), \nthis is done on purpose cause modules are exclusive.\n\nExample how to create JavaTimeModuleConfiguration with [ISO8601 with millis precision](https://goodforgod.dev/posts/2/) formatters:\n```java\nJavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration();\n```\n\nExample of all available configurations for JavaTimeModuleConfiguration.\n```java\nJavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration()\n                    .setInstantFormat(\"uuuu-MM-dd\")                                     // Set Instant formatter\n                    .setOffsetTimeFormat(\"HH:mm:ss[.SSS]XXX\")                           // Set OffsetTime formatter\n                    .setOffsetDateTimeFormat(\"uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX\")          // Set OffsetDateTime formatter\n                    .setZonedDateTimeFormat(\"uuuu-MM-dd'T'HH:mm:ss[.SSS]XXX['['VV']']\") // Set ZonedDateTime formatter\n                    .setLocalDateTimeFormat(\"uuuu-MM-dd'T'HH:mm:ss[.SSS]\")              // Set LocalDateTime formatter\n                    .setLocalDateFormat(\"uuuu-MM-dd\")                                   // Set LocalDate formatter\n                    .setLocalTimeFormat(\"HH:mm:ss[.SSS]XXX\")                            // Set LocalTime formatter\n                    .setYearFormat(\"uuuu\")                                              // Set Year formatter\n                    .setYearMonthFormat(\"uuuu-MM\")                                      // Set YearMonth formatter\n                    .setMonthDayFormat(\"MM-dd\")                                         // Set MonthDay formatter\n                    .setForceIsoChronology(true)                                        // Forces IsoChronology for all formatters\n                    .setForceResolverStrict(true);                                      // Forces ResolverStyle#STRICT for all formatters\n```\n\n### Module\n\nExample how to create configuration, module and register module for ObjectMapper.\n\n```java\nJavaTimeModuleConfiguration configuration = new JavaTimeModuleConfiguration();\nconfiguration.setLocalTimeFormat(\"HH-mm-ss\");\n\nJavaTimeModule module = configuration.getModule();\n\nObjectMapper mapper = new ObjectMapper();\nmapper.registerModule(module);\n```\n\n### Hints\n\nFor proper Date \u0026 Times serialization, you probably don't want to adjust ZoneOffset when deserializing and serializing as longs, then configure ObjectMapper as follows:\n```java\nObjectMapper mapper = new ObjectMapper()\n        .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)               // Don't write dates as longs\n        .configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, false);    // Don't change ZoneOffset to local\n```\n\n## License\n\nThis project licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fjackson-datetime-configuration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoodforgod%2Fjackson-datetime-configuration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fjackson-datetime-configuration/lists"}