我有一个完整的ISO8601字符串,如下所示:1989-08-16T00:00:00.000Z
。如何使用LocalDate
库从中创建js-joda
的实例?
尝试使用LocalDate.parse()
直接解析时,我收到以下错误:
DateTimeParseException: Text '1989-08-16T00:00:00.000Z' could not be parsed,
unparsed text found at index 10…
我知道我可以轻松地将字符串拆分为T
个字符,或者用香草Date
解析它,然后从中创建LocalDate
,但是有一个更简单的方法,我可以用于轻松地将任何 ISO8601兼容字符串解析为LocalDate
?
答案 0 :(得分:1)
首先将您的日期转换为Js Date对象,然后转换为LocalDate对象。
Date.parse
将ISO字符串转换为毫秒,然后将其转换为JS日期。最终使用JS Date对象获取LocalDate对象。
var jsDate = new Date(Date.parse('1989-08-16T00:00:00.000Z')); //Iso Date string
var LocalDateObj = LocalDate.of(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());
答案 1 :(得分:1)
ISO字符串' 1989-08-16T00:00:00.000Z'表示UTC时间戳。
您可以使用相应的js-joda域Instant
对其进行解析,然后将其转换为LocalDate
。例如
let utcTimestamp = Instant.parse('1989-08-16T00:00:00.000Z')
let date = LocalDate.ofInstant(utcTimestamp)