From bdf4bb0e23d4a1b59e73ccd8029205bc3b62c4ea Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sun, 22 Jun 2025 13:34:30 +0200 Subject: [PATCH] fix: date alignment for different time zones --- src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java | 6 +++++- .../java/dev/pcvolkmer/onco/datamapper/ResultSetTest.java | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java b/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java index 491e083..9175ede 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java @@ -2,6 +2,8 @@ package dev.pcvolkmer.onco.datamapper; import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException; +import java.time.LocalDate; +import java.time.ZoneId; import java.util.Date; import java.util.Map; @@ -124,7 +126,9 @@ public class ResultSet { return null; } if (raw instanceof Date) { - return (Date) raw; + var localDate = LocalDate.parse(raw.toString()); + // JSON Converter uses UTC timezone + return Date.from(localDate.atStartOfDay(ZoneId.of("UTC")).toInstant()); } throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to Date"); diff --git a/src/test/java/dev/pcvolkmer/onco/datamapper/ResultSetTest.java b/src/test/java/dev/pcvolkmer/onco/datamapper/ResultSetTest.java index 19e815f..ada3b58 100644 --- a/src/test/java/dev/pcvolkmer/onco/datamapper/ResultSetTest.java +++ b/src/test/java/dev/pcvolkmer/onco/datamapper/ResultSetTest.java @@ -37,7 +37,7 @@ class ResultSetTest { void shouldReturnDateValues() { var data = getTestData(); - assertThat(data.getDate("date")).isEqualTo(new Date(Date.from(Instant.parse("2025-06-21T12:00:00Z")).getTime())); + assertThat(data.getDate("date")).isEqualTo(new Date(Date.from(Instant.parse("2025-06-21T00:00:00Z")).getTime())); } static ResultSet getTestData() { @@ -45,7 +45,7 @@ class ResultSetTest { Map.of( "string", "TestString", "int", 42, - "date", new Date(Date.from(Instant.parse("2025-06-21T12:00:00Z")).getTime()) + "date", new Date(Date.from(Instant.parse("2025-06-21T02:00:00Z")).getTime()) ) ); }