Время конкретного пользователя в Java

102
09 февраля 2022, 01:40

В коде имеется сервис, который разрешает/отклоняет HTTP запрос в зависимости от времени (до 11:00 разрешено, после - запрещено). На текущий момент реализовано крайне просто:

public Vote vote(Restaurant restaurant, User user) {
    Vote voteFromRepo = voteRepository.findByUserIdAndDate(user.getId(), LocalDate.now());
    if (voteFromRepo != null && LocalTime.now().isAfter(LocalTime.of(11, 0))) {
        throw new VoteDenyException();
    }
    return voteRepository.save(new Vote(restaurant, user));
}

Как привязать проверку времени к часовому поясу пользователя, а не к системному времени?

Answer 1

Используйте LocalDateTime, там есть возможность задать TimeZone. В базе храните все даты в формате UTC, когда даты показываются пользователям отображаете им даты, приводя к их часовому поясу. В вашем случае в запросе отправляйте текущие дату,время и часовой пояс клиента.

Посмотреть как на клиенте получить дату и зону можно здесь https://stackoverflow.com/questions/1091372/getting-the-clients-timezone-offset-in-javascript

READ ALSO
Не изменяется размер Frame

Не изменяется размер Frame

По нажатию на кнопки в подменю с определенным размером окна должен установится данный размер окна,но этого не происходитНе могу понять почему

98
Запись файлов на SD карту

Запись файлов на SD карту

Как записывать файлы на флеш-карту в андроиде?

85
Разъясните, пожалуйста кусок кода

Разъясните, пожалуйста кусок кода

не понятно что делает кусок Colorvalues()[matrix[i][h]] Color этоперечисление строк, аргумент метода Color, что делает такая запись?Разъясните, спасибо!

99