1. 修复WebDav中的时间字段解析BUG
2. 调整时间转换类为 DateTimeFormatter + LocalDateTime 的线程安全组合
pull/1894/head
谢意帆 3 years ago
parent 20b1fd9077
commit 87732f1793
  1. 14
      app/src/main/java/io/legado/app/lib/webdav/WebDav.kt

@ -19,14 +19,16 @@ import java.io.InputStream
import java.net.MalformedURLException import java.net.MalformedURLException
import java.net.URL import java.net.URL
import java.net.URLEncoder import java.net.URLEncoder
import java.text.SimpleDateFormat import java.time.LocalDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
@Suppress("unused", "MemberVisibilityCanBePrivate") @Suppress("unused", "MemberVisibilityCanBePrivate")
open class WebDav(urlStr: String, val authorization: Authorization) { open class WebDav(urlStr: String, val authorization: Authorization) {
companion object { companion object {
@SuppressLint("SimpleDateFormat") @SuppressLint("DateTimeFormatter")
private val dateFormat = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZ") private val dateTimeFormatter = DateTimeFormatter.RFC_1123_DATE_TIME
// 指定返回哪些属性 // 指定返回哪些属性
@Language("xml") @Language("xml")
@ -133,11 +135,11 @@ open class WebDav(urlStr: String, val authorization: Authorization) {
.firstOrNull()?.text()?.toLong() ?: 0 .firstOrNull()?.text()?.toLong() ?: 0
}.getOrDefault(0) }.getOrDefault(0)
val lastModify: Long = kotlin.runCatching { val lastModify: Long = kotlin.runCatching {
element.getElementsByTag("d:getcontentlength") element.getElementsByTag("d:getlastmodified")
.firstOrNull()?.text()?.let { .firstOrNull()?.text()?.let {
dateFormat.parse(it) LocalDateTime.parse(it, dateTimeFormatter).toInstant(ZoneOffset.of("+8")).toEpochMilli()
} }
}.getOrNull()?.time ?: 0 }.getOrNull() ?: 0
webDavFile = WebDavFile( webDavFile = WebDavFile(
baseUrl + fileName, baseUrl + fileName,
authorization, authorization,

Loading…
Cancel
Save