Как преобразовать дату JSon в java.util.DateПреобразовать дату в формате JSON на сегодняшний день в Java
{"date":31,"day":4,"hours":0,"minutes":0,"month":11,"seconds":0,"time":2145805200000,"timezoneOffset":-420,"year":137}
Спасибо за помощь
Как преобразовать дату JSon в java.util.DateПреобразовать дату в формате JSON на сегодняшний день в Java
{"date":31,"day":4,"hours":0,"minutes":0,"month":11,"seconds":0,"time":2145805200000,"timezoneOffset":-420,"year":137}
Спасибо за помощь
С быстрым поиском Google, мне удалось найти эту страницу: CLICK
Метод 'parse', возвращающий Date
, показывает вам, как использовать класс SimpleDateFormat
в Java, который используется для синтаксического анализа строки в Date
.
Надеюсь, это помогло!
Нет такой вещи, как дата JSON. JSON имеет very few data types, ни одна из которых не связана с датой.
Это time
элемент со значением 2145805200000
, вероятно, отсчет, так как epoch. Два вопроса: какая эпоха? и Какова зернистость графа?
Обычно используется milliseconds с Unix epoch первого момента 1970 года в UTC.
Рамка java.time, встроенная в Java 8 и более поздняя, может переводить такое число. Класс Instant
представляет момент на временной шкале в UTC.
long sinceEpoch = 2145805200000L;
Instant instant = Instant.ofEpochMilli (sinceEpoch);
Дамп для консоли.
System.out.println ("instant: " + instant);
мгновенным: 2037-12-30T17: 00: 00Z
Это значение может быть близко к другим полей в формате JSON, но не совсем совпадают.
В вашем JSON есть поле timezoneOffset
со значением -420
. Если мы интерпретируем это число как offset-from-UTC в минутах, это будет означать 7 часов. Мы можем запросить java.time, чтобы настроить Instant в такое смещение.
Обычно мы хотели бы использовать часовой пояс для этой настройки. Часовой пояс - это смещение-от-UTC плюс набор исторических правил для обработки аномалий, таких как летнее время (DST). Но в этом случае мы имеем только смещение-от-UTC. Поэтому вместо использования ZoneId
мы используем подкласс ZoneOffset
. Результатом является ZonedDateTime
.
ZoneOffset zoneOffset = ZoneOffset.ofHours (7);
ZonedDateTime zdt = ZonedDateTime.ofInstant (instant , zoneOffset);
Дамп для консоли.
System.out.println ("instant: " + instant + " + zoneOffset: " + zoneOffset + " = zdt: " + zdt);
мгновенные: 2037-12-30T17: 00: 00Z + zoneOffset: +07: 00 = Н: 2037-12-31T00: 00 + 07: 00
Это заставляет нас к началу дня 31 декабря в 2037 году. Тем не менее, точное совпадение с другими полями JSON.
Но если -420
предназначалось как 7 часов UTC они связывают, а не вперед, нам нужно изменить, что смещение от 7
часов до отрицательных -7
часов. Тогда результаты будут:
мгновенный: 2037-12-30T17: 00: 00Z + zoneOffset: -07: 00 = Н: 2037-12-30T10: 00-07: 00
Если бы вы знали больше о своих данных JSON, возможно, решение могло быть найдено.
Вы просто разбираете значение 'time'' 2145805200000' и создаете объект даты, например 'java.util.Date (2145805200000l)', укажет вам соответствующую дату. Поскольку 'java.util.Date' является независимым от часовой пояс, не нужно рассматривать' timezoneOffset' –
Спасибо, он работает –