我从https://stackoverflow.com/a/18217193/6727914那里拿到的
val df1: DateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
val string1 = "2022-12-29T19:59:20.783357Z"
val result1: Date = df1.parse(string1)
但它不起作用:
线程“main”中出现异常。无法解析的日期:“2022年12月29日T19:59:20.783357Z”,位于java.文本.日期格式.解析(:-1)
文件Kt.main(文件kt:13)文件Kt.main(文件kt:-1)
我无法使用Instant.parse(date)
日期“2022-12- 29 T19:59:20.783357Z”是有效的Iso 8601 String,其中783是毫秒,357是微秒
1条答案
按热度按时间k4aesqcs1#
SimpleDateFormat
无法处理小数秒到微秒的分辨率,它的限制是毫秒分辨率。如果您尝试按原样解析它,将得到错误的结果,如this answer中所述。你有两个选择:
1.将秒的分数截断为毫秒分辨率。
1.按照this post中的说明使用ThreeTenABP或Android desugaring support。然后可以使用
Instant#parse
将日期时间字符串解析为Instant
。X
而不是Z
。使用java. time API的解决方案
ONLINE DEMO