如何使用 js-joda 将任何 ISO8601 字符串转换为 LocalTime?

How do you convert any ISO8601 string to LocalTime using js-joda?

我有一个完整的 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 字符处拆分字符串或用 vanilla Date 解析它,然后从中创建 LocalDate,但是有没有更简单的方法,即我可以用来轻松地将 any ISO8601 兼容字符串解析为 LocalDate?

首先将您的日期转换为 Js Date 对象,然后再转换为 LocalDate 对象。

Date.parse将ISO字符串转为毫秒,再转为JS Date。最终使用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());

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)