Java 8 Time - конвертировать Javascript 's Date (). GetTimezoneOffset в ZoneOffset - PullRequest
0 голосов
/ 21 января 2020

В моем веб-приложении пользователю разрешено выбирать время, например, «8:15 вечера», а день, например, «среда». Когда это отправляется на сервер, я отправляю строку «8:15 вечера», «среда» и информацию о часовом поясе, используя метод Javascript

new Date().getTimezoneOffset()

. Возвращает смещение в минутах. от UT C. Как я могу преобразовать что-то вроде 360 (6 часов) в ZoneOffset, чтобы я мог рассчитать правильный OffsetDateTime? Есть ли служебный метод, который преобразует часы и базовый ZoneOffset в новый ZoneOffset?

1 Ответ

0 голосов
/ 21 января 2020

Просто немного пищи для размышлений, вы можете отправить текущее время в миллисекундах или нано на сервер, которое будет 64 или 8 байтов, в отличие от отправки строки переменной длины, сопровождаемой часами выключения зоны с использованием другого байта, или несколько бит, если вы действительно хотите.

Также, как упомянул другой пользователь, вы можете создать ZoneOffset, используя ZoneOffset # ofHours и другие полезные фабричные методы.

ZoneOffset offset = ZoneOffset.ofHours(6);

Пример того, как преобразовать в ZonedDateTime

int offsetHours = 6; // receive from client

long millis = System.currentTimeMillis(); // received from client

ZoneOffset offset = ZoneOffset.ofHours(offsetHours);

ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochMilli(millis), offset);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...