如何使用JS-JODA将任何ISO8601字符串转换为localtime



我有一个完整的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());

最新更新