2

我有一个完整的 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…

我知道我可以轻松地将字符串拆分为Tcharacter 或用 vanilla 解析它,Date然后LocalDate从中创建,但是有没有更简单的方法可以用来轻松地将任何ISO8601 兼容字符串解析为LocalDate?

4

2 回答 2

3

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)
于 2017-07-30T16:27:27.893 回答
1

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

Date.parseISO 字符串转换为毫秒,然后将其转换为 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());
于 2017-06-24T09:18:24.777 回答