OpenChargeMap ZonedDateTimeAdapter: fallback to UTC if zone not given

This commit is contained in:
johan12345
2022-03-20 16:02:04 +01:00
parent 57747a9f01
commit ba55f1bc8a
2 changed files with 30 additions and 1 deletions

View File

@@ -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

View File

@@ -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")
)
}
}