Преобразовать формат даты и времени ISO8601 в другой формат даты и времени ISO8601 - PullRequest
0 голосов
/ 30 января 2019

У меня возникла проблема. Мне нужно преобразовать дату в формате даты и времени в формате ISO8601 в другой формат даты ISO8601. Например, мне нужно преобразовать 2019-01-08T09:51:34+0000 в другой аналогичный формат даты и времени на основе локали. Я пыталсяДелая это:

OffsetDateTime offsetDateTime = OffsetDateTime.parse(date);
Instant instant = offsetDateTime.toInstant(); 

Но отсюда я могу преобразовать в объект даты, но вопрос в том, как я могу преобразовать в другой формат даты / времени ISO8601 на основе получаемой локали.Вы можете предположить, что у меня есть формат, сохраненный в db, который я могу получить, используя локаль, упомянутую выше, и в этой части нет никаких проблем.

Я боролся с этим последние 3 недели.Пожалуйста, укажите мне, что мне не хватает или что мне нужно изменить в моем подходе.

1 Ответ

0 голосов
/ 30 января 2019

Языковой стандарт не имеет отношения к ISO 8601

A Locale используется для локализации при создании текста, описывающего значение даты и времени.

ISO 8601 - это стандартное определение для определения текстовых форматов, представляющих значения даты и времени, которые не локализованы.Избегать локализации - это единый смысл ISO 8601, чтобы обеспечить единый формат для использования во всем мире.Это обеспечивает легкий надежный обмен данными.

Например, дата представлена ​​везде в формате YYYY-MM-DD в ISO 8601.23 января - 2019-01-23 всегда, независимо от того, находитесь ли вы в Монреале, Квебеке, Берлине, Германии, Пуне, Индии или Токио, Японии.

Так что ваш вопрос о Locale с ISO 8601 не имеет смысла.

преобразовать в другой формат даты / времени ISO8601 в зависимости от получаемой локали

Ваша фраза противоречит условиям.В строке ISO 8601 не используется Locale.

Предлагаю вам потратить некоторое время на изучение страницы Википедии для ISO 8601 .

...