2015-12-04 3 views
0

Как преобразовать дату JSon в java.util.DateПреобразовать дату в формате JSON на сегодняшний день в Java

{"date":31,"day":4,"hours":0,"minutes":0,"month":11,"seconds":0,"time":2145805200000,"timezoneOffset":-420,"year":137} 

Спасибо за помощь

+0

Вы просто разбираете значение 'time'' 2145805200000' и ​​создаете объект даты, например 'java.util.Date (2145805200000l)', укажет вам соответствующую дату. Поскольку 'java.util.Date' является независимым от часовой пояс, не нужно рассматривать' timezoneOffset' –

+0

Спасибо, он работает –

ответ

0

С быстрым поиском Google, мне удалось найти эту страницу: CLICK
Метод 'parse', возвращающий Date, показывает вам, как использовать класс SimpleDateFormat в Java, который используется для синтаксического анализа строки в Date.

Надеюсь, это помогло!

0

Нет JSON Дата

Нет такой вещи, как дата 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, возможно, решение могло быть найдено.

Смежные вопросы