получает дату, отправленную в формате JSON.
Не существует такого понятия, как формат JSON для значений даты и времени.
Это мой json формат:
"дата": "2020-01-01T00: 00: 00.000Z"
Z
в конце означает эту дату и время следует рассматривать как UT C, смещение нуля часов, минут и секунд. Формат этого текста определен в ISO 8601 .
Разбор и Instant
. Никогда не используйте Date
. Используйте только классы java .time .
В стандартном формате ISO 8601 указывать форматирование не нужно.
Instant instant = Instant.parse( "2020-01-01T00:00:00.000Z" ) ;
Итак, посмотрите, как настроен момент в другом часовом поясе, примените ZoneId
.
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
Знайте, что объекты даты и времени не имеют «формата». Вы можете генерировать / анализировать строки в различных форматах, но объект даты и времени является отдельным и отличным.
получает только дату
Если вы имеете в виду часть даты без время суток, вы можете извлечь LocalDate
после настройки на часовой пояс, по которому вы хотите интерпретировать дату. Помните, что в любой данный момент даты различны по всему земному шару по зонам.
Instant
.parse( "2020-01-01T00:00:00.000Z" )
.atZone( ZoneId.of( "America/Montreal" ) )
.toLocalDate()
без добавленного UT C?
Там нет "добавленного" UT C. Ваше первоначальное значение представляет момент, как видно из UT C. Мы знаем, что из-за Z
, что означает UT C и произносится «Зулу».
Я отправил JSON DEBUG 5436 --- [nio-8080-exe c -2] org.hibernate. SQL: выберите число (*) из dbo. (Имя_таблицы), где date = 'Ср 01 января 05:30:00 IST 2020'
Использовать смарт-объект а не просто строки в качестве аргументов в ваших запросах. Hibernate и JDB C 4.2 позволяют обмениваться java .time объектами с вашей базой данных.
![Table of date-time types in Java (both legacy and modern) and in standard SQL](https://i.stack.imgur.com/2Yu8O.png)
'Wed Jan 01 05:30:00 IST 2020'
Никогда не используйте этот ужасный формат для обмена значениями даты и времени с помощью текста. Этот формат предполагает использование Engli sh, его трудно анализировать на машине, он использует псевдо-часовой пояс из 2-4 символов, например IST
, который не стандартизирован и не является уникальным (Iri sh Стандартное время? Стандартное время Индии? ).
Переполнение стека поиска для получения дополнительной информации. Все это уже освещалось много, много раз. Поиск и изучение перед публикацией.