From ba55f1bc8a084cfc4aeac9507ddb072fd237ff90 Mon Sep 17 00:00:00 2001 From: johan12345 Date: Sun, 20 Mar 2022 16:02:04 +0100 Subject: [PATCH] OpenChargeMap ZonedDateTimeAdapter: fallback to UTC if zone not given --- .../openchargemap/OpenChargeMapAdapters.kt | 10 ++++++++- .../OpenChargeMapAdaptersTest.kt | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/src/test/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdaptersTest.kt diff --git a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdapters.kt b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdapters.kt index ce5e9881..7ec223e5 100644 --- a/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdapters.kt +++ b/app/src/main/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdapters.kt @@ -2,12 +2,20 @@ package net.vonforst.evmap.api.openchargemap import com.squareup.moshi.FromJson import com.squareup.moshi.ToJson +import java.time.LocalDateTime +import java.time.ZoneOffset import java.time.ZonedDateTime +import java.time.format.DateTimeParseException internal class ZonedDateTimeAdapter { @FromJson fun fromJson(value: String?): ZonedDateTime? = value?.let { - ZonedDateTime.parse(value) + try { + ZonedDateTime.parse(value) + } catch (e: DateTimeParseException) { + val dt: LocalDateTime = LocalDateTime.parse(value) + dt.atZone(ZoneOffset.UTC) + } } @ToJson diff --git a/app/src/test/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdaptersTest.kt b/app/src/test/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdaptersTest.kt new file mode 100644 index 00000000..eda4ed13 --- /dev/null +++ b/app/src/test/java/net/vonforst/evmap/api/openchargemap/OpenChargeMapAdaptersTest.kt @@ -0,0 +1,21 @@ +package net.vonforst.evmap.api.openchargemap + +import org.junit.Assert.assertEquals +import org.junit.Test +import java.time.ZoneOffset +import java.time.ZonedDateTime + +class OpenChargeMapAdaptersTest { + @Test + fun testZonedDateTimeAdapter() { + val adapter = ZonedDateTimeAdapter() + assertEquals( + ZonedDateTime.of(2022, 3, 19, 23, 24, 0, 0, ZoneOffset.UTC), + adapter.fromJson("2022-03-19T23:24:00Z") + ) + assertEquals( + ZonedDateTime.of(2022, 3, 19, 23, 24, 0, 0, ZoneOffset.UTC), + adapter.fromJson("2022-03-19T23:24:00") + ) + } +} \ No newline at end of file