diff --git a/androidApp/src/test/kotlin/DatesTest.kt b/androidApp/src/test/kotlin/DatesTest.kt index ad29ec7..7751c99 100644 --- a/androidApp/src/test/kotlin/DatesTest.kt +++ b/androidApp/src/test/kotlin/DatesTest.kt @@ -11,6 +11,7 @@ class DatesTest { private val v3Date = "2013-04-07T13:43:00+01:00" private val v4Date = "2013-04-07 13:43:00" + private val bug1Date = "2022-12-24T17:00:08+00" @Test fun v3_date_should_be_parsed() { @@ -30,4 +31,14 @@ class DatesTest { assertEquals(date, expected) } + @Test + fun bug1_date_should_be_parsed() { + val date = DateUtils.parseDate(bug1Date) + val expected = + LocalDateTime(2022, 12, 24, 18, 0, 8, 0).toInstant(TimeZone.currentSystemDefault()) + .toEpochMilliseconds() + + assertEquals(date, expected) + } + } diff --git a/shared/src/androidMain/kotlin/bou/amine/apps/readerforselfossv2/utils/DateUtils.kt b/shared/src/androidMain/kotlin/bou/amine/apps/readerforselfossv2/utils/DateUtils.kt index 3cde9e2..2349d3b 100644 --- a/shared/src/androidMain/kotlin/bou/amine/apps/readerforselfossv2/utils/DateUtils.kt +++ b/shared/src/androidMain/kotlin/bou/amine/apps/readerforselfossv2/utils/DateUtils.kt @@ -10,7 +10,11 @@ actual class DateUtils { return try { Instant.parse(dateString).toEpochMilliseconds() } catch (e: Exception) { - LocalDateTime.parse(dateString.replace(" ", "T")).toInstant(TimeZone.currentSystemDefault()).toEpochMilliseconds() + var str = dateString.replace(" ", "T") + if (str.matches("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+\\d{2}".toRegex())) { + str = str.split("+")[0] + } + LocalDateTime.parse(str).toInstant(TimeZone.currentSystemDefault()).toEpochMilliseconds() } }