Как конвертировать любую строку ISO8601 в LocalTime, используя js-joda?
У меня есть полная строка 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
?
2 ответа
Сначала преобразуйте свою дату в объект Js Date, затем в объект LocalDate.
Date.parse
преобразует строку ISO в миллисекунды, а затем преобразует ее в дату JS. В конце концов, используя объект Date 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());
Строка 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)