Джексон, что установить часовой пояс для разбора JSON? - PullRequest
0 голосов
/ 27 октября 2018

Чувствуя себя немного потерянным здесь.Я анализирую «дату» в следующем формате:

@JsonProperty("earliest_pick_up_time")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm", timezone = "Europe/Berlin")
private Date earliestPickUpTime;

Но на самом деле это не дата, так как источником являются часы и минуты, например, 14:43 или 16:12 и т. Д.

Какой часовой пояс здесь?Часовой пояс чего?Сервер?Устройство?Нужно ли считать местоположение устройства, чтобы оно всегда отображалось правильно?14:43 - 14:43 независимо от того, находится ли пользователь в Берлине или Австралии в этом случае.Нужно ли знать местоположение сервера?

Пользователь устанавливает это время и дату раньше, поэтому относится ли часовой пояс к этому?

Если я не установил часовой пояс явно, я получу неправильные даты.Теперь я установил часовой пояс как МОЙ часовой пояс, но я не уверен, что это даже правильно.

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Дата, вероятно, не очень хороший объект, так как вам нужно проанализировать ЧЧ: мм.

Даты представляют определенный момент времени после 01.01.1970 UTC.И вы не можете представить, что всего с часом от 0 до 23

Возможно, вам стоит заняться созданием пользовательского объекта HourMinute и пользовательского десериализатора / сериализатора

. Также вы должны учитывать часовой пояскак какое-то смещение.

Что, если я нахожусь в Берлине, и я установил свое самое раннее время погрузки на 1.00

Время -5 утра в Нью-Йорке?

0 голосов
/ 27 октября 2018

Часовой пояс сервера и часовой пояс клиента могут отличаться. Я бы установил часовой пояс по умолчанию для моего сервера в UTC. Вместе со временем я бы заставлял клиентов отправлять информацию о часовом поясе в каждом запросе (может быть в качестве параметра или заголовка запроса). На сервере я бы разобрал его в UTC и сохранил в db как отметку времени. При получении из базы данных это будет UTC. Я бы снова перешел в часовой пояс клиента и отправил его обратно.

Так что в идеале местоположение сервера не имеет значения, если вы устанавливаете часовой пояс по умолчанию. Вы можете напрямую установить его на сервере или установить в приложении при запуске. Однако местоположение клиента действительно имеет значение. Вы можете показать им время в своем часовом поясе. Не добавляйте смещения часовых поясов вручную. Используйте встроенные рамки для управления переходом на летнее время и т. Д.

...