我有格林威治標準時間String "Thr, 09 Jun 2022 19:20:00 GMT"
我想把它轉換成Date.
誰能幫助我如何轉換它?
我嘗試了各種方法,但給予Unparseable date: "Thr, 09 Jun 2022 19:20:00 GMT"
這是代碼:
private fun getDate(time: String): Date? {
val pattern = "EEE, dd MMM yyyy HH:mm:ss Z"
val format = SimpleDateFormat(pattern)
var javaDate: Date? = null
try {
javaDate = format.parse(time)
} catch (e: ParseException) {
e.printStackTrace()
}
return javaDate
}
我提到了這個問題。
uj5u.com熱心網友回復:
如果您決定不使用過時的庫,您可能需要查看java.time. 目前有一個kotlinx.datetime正在開發中,但java.time無論如何它都是基于的。
你可以String像這樣決議你的:
import java.time.format.DateTimeFormatter
import java.time.ZonedDateTime
import java.util.Locale
fun main() {
// your example
val input = "Thu, 09 Jun 2022 19:20:00 GMT"
// define a formatter that parses Strings like yours
val dtf = DateTimeFormatter.ofPattern("EEE, dd MMM uuuu HH:mm:ss O",
Locale.ENGLISH)
// parse the String and get a ZonedDateTime
val zdt = ZonedDateTime.parse(input, dtf)
// print the result using the ISO format
println(zdt.format(DateTimeFormatter.ISO_ZONED_DATE_TIME))
// or print it using the formatter that parsed your example
println(zdt.format(dtf))
}
此代碼輸出兩行:
2022-06-09T19:20:00Z
Thu, 09 Jun 2022 19:20:00 GMT
我建議你把你的fun回報java.time.ZonedDateTime...
為了完整性......
在這種情況下,您可以擺脫定義自己的格式化程式,有一個用于日期加時間的 RFC1123 格式的預構建。以下代碼與上面的代碼相同,但使用了內置的DateTimeFormatter.RFC_1123_DATE_TIME:
fun main() {
// your example
val input = "Thu, 09 Jun 2022 19:20:00 GMT"
// choose a prebuilt formatter that parses RFC-formatted Strings
val rfc1123dtf = DateTimeFormatter.RFC_1123_DATE_TIME
// parse the String using the formatter and get a ZonedDateTime
val zdt = ZonedDateTime.parse(input, rfc1123dtf)
// print the result using the ISO format
println(zdt.format(DateTimeFormatter.ISO_ZONED_DATE_TIME))
// or print it using the formatter that parsed your example
println(zdt.format(rfc1123dtf))
}
uj5u.com熱心網友回復:
您所指的網站答案很有效。
import java.text.*
fun main() {
val rfcDate = "Sat, 13 Mar 2010 11:29:05 -0800";
val pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
val format = SimpleDateFormat(pattern);
val javaDate = format.parse(rfcDate);
println(javaDate)
}
您可以在此處在線運行示例
因此,您的輸入字串很可能與這種模式不匹配。
確實Thr是無效的。應該是Thu。這是更新后的游樂場
uj5u.com熱心網友回復:
檢查您在此處輸入鏈接描述的模式,在我看來您需要將其更改為:
val pattern = "EEE, dd MMM yyyy HH:mm:ss Z";
至:
val pattern = "EEE, dd MMM yyyy HH:mm:ss z";
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/491286.html
