我有一个完整的ISO8601字符串,看起来像这样: 1989-08-16T00:00:00.000Z
。如何使用js-joda
库从其创建LocalDate
的实例?
试图用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
?
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)
首先将您的日期转换为JS日期对象,然后转换为localdate对象。
Date.parse
将ISO字符串转换为MiliseConds,然后将其转换为JS日期。最终使用JS日期对象获取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());