move date formatters to KomgaHelper (#14989)

apply UTC timezone to formatters
return time as 0 if parsing fails
This commit is contained in:
Gauthier 2023-01-17 19:24:20 +08:00 committed by GitHub
parent 5299ba7da5
commit 04f8307fd9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 10 deletions

View File

@ -1,3 +1,11 @@
## 1.3.44
Minimum Komga version required: `0.151.0`
### Fix
* Better date/time parsing
## 1.3.43
Minimum Komga version required: `0.151.0`

View File

@ -6,7 +6,7 @@ ext {
extName = 'Komga'
pkgNameSuffix = 'all.komga'
extClass = '.KomgaFactory'
extVersionCode = 43
extVersionCode = 44
}
dependencies {

View File

@ -46,8 +46,6 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.security.MessageDigest
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
open class Komga(suffix: String = "") : ConfigurableSource, UnmeteredSource, HttpSource() {
@ -302,26 +300,26 @@ open class Komga(suffix: String = "") : ConfigurableSource, UnmeteredSource, Htt
private fun parseDate(date: String?): Long =
if (date == null)
Date().time
0
else {
try {
SimpleDateFormat("yyyy-MM-dd", Locale.US).parse(date).time
KomgaHelper.formatterDate.parse(date)?.time ?: 0
} catch (ex: Exception) {
Date().time
0
}
}
private fun parseDateTime(date: String?): Long =
if (date == null)
Date().time
0
else {
try {
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US).parse(date).time
KomgaHelper.formatterDateTime.parse(date)?.time ?: 0
} catch (ex: Exception) {
try {
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S", Locale.US).parse(date).time
KomgaHelper.formatterDateTimeMilli.parse(date)?.time ?: 0
} catch (ex: Exception) {
Date().time
0
}
}
}

View File

@ -0,0 +1,14 @@
package eu.kanade.tachiyomi.extension.all.komga
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.TimeZone
object KomgaHelper {
val formatterDate = SimpleDateFormat("yyyy-MM-dd", Locale.US)
.apply { timeZone = TimeZone.getTimeZone("UTC") }
val formatterDateTime = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US)
.apply { timeZone = TimeZone.getTimeZone("UTC") }
val formatterDateTimeMilli = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S", Locale.US)
.apply { timeZone = TimeZone.getTimeZone("UTC") }
}