将字符串转换为LocalDate Kotlin
我想转换字符串值 这是我的代码将字符串转换为LocalDate Kotlin,kotlin,Kotlin,我想转换字符串值 这是我的代码 val dateFirst = "20 Aug 2012" val dateSecond = "12/16/2020 12:00:00 AM" val dateFirstConverted = LocalDate.parse(dateFirst, DateTimeFormatter.BASIC_ISO_DATE) val dateSecondConverted = LocalDate.parse(dateSecond, D
val dateFirst = "20 Aug 2012"
val dateSecond = "12/16/2020 12:00:00 AM"
val dateFirstConverted = LocalDate.parse(dateFirst, DateTimeFormatter.BASIC_ISO_DATE)
val dateSecondConverted = LocalDate.parse(dateSecond, DateTimeFormatter.BASIC_ISO_DATE)
println(dateFirstConverted)
println(dateSecondConverted)
然后我得到这样的错误
Exception in thread "main" java.time.format.DateTimeParseException: Text '20 Aug 2012' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDate.parse(LocalDate.java:400)
at App.TryKt.main(try.kt:11)
at App.TryKt.main(try.kt)
有人能帮我解决这个问题吗?您有问题,因为日期的格式不受支持,我邀请您阅读本文,但如果您希望代码运行,请更改日期的格式,如下所示:
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.LocalDate
fun main() {
//example
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.BASIC_ISO_DATE
val formatted = current.format(formatter)
println("Current Date is: $formatted")
//your code
val dates = /*"20 Aug 2012"*/ "20120820"
val datess = LocalDate.parse(dates, DateTimeFormatter.BASIC_ISO_DATE)
println(datess)
}
tl;dr⇒ 您正在使用错误的模式进行分析
字符串
的格式为dd MMM uuuu
(非ISO格式),但您正试图使用DateTimeFormatter.ISO\u LOCAL\u date
字符串的格式为MM/dd/uuu hh:MM:ss a
(非ISO),但您试图使用DateTimeFormatter.ISO_LOCAL_DATE
解析它,这至少是双重错误,因为格式化程序试图解析ISO日期。您的字符串
是非ISO的,并且包含的信息(一天中的时间)超出了此格式化程序能够解析的范围
DateTimeFormatter
s,与您当前使用的类似,但您需要使用正确的一个,或者如果没有,请创建一个覆盖您的字符串的(通过DateTimeFormatter.of模式(…)
或使用DateTimeFormatterBuilder
)
下面是您的字符串的一个小示例
示例:
fun main(args:Array){
//您的示例字符串
val dateFirst=“2012年8月20日”
val dateSecond=“12/16/2020 12:00:00 AM”
//这里需要两个不同的格式化程序,字符串的格式和内容不同
val firstFormatter=DateTimeFormatter.of模式(“dd MMM uuu”,Locale.ENGLISH)
val secondFormatter=DateTimeFormatter.of模式(“MM/dd/uuu hh:MM:ss a”,Locale.ENGLISH)
//然后根据您想要解析的内容使用这些
val localDate=localDate.parse(dateFirst,firstFormatter)
val localDateTime=localDateTime.parse(dateSecond,secondFormatter)
//使用内置的格式化程序进行输出
println(localDate.format(DateTimeFormatter.ISO\u LOCAL\u DATE))
println(localDateTime.format(DateTimeFormatter.ISO\u LOCAL\u DATE\u TIME))
}
输出(ISO):
2012-08-20
2020-12-16T00:00:00
DateTimeFormatter.BASIC\u ISO\u DATE
可以解析的模式你知道吗?您试图解析的字符串
不是这些格式,示例代码中的日期甚至与异常跟踪中的日期格式不同。