Android: проблемы времени и часовых поясов - PullRequest
0 голосов
/ 05 февраля 2020

Я получаю данные о времени какого-либо события с сервера в UT C. Например, это должно произойти через 5 часов.

Но когда пользователь меняет время устройства (например, +2 часа), время до события становится 3 часа (не 5)

Но если пользователь меняет не время, а часовой пояс, то все работает нормально. Тогда я решил проверить смещение часового пояса. Даже если я изменю свое время на +2 часа, система все еще думает, что время моего часового пояса.

У меня одно и то же смещение часового пояса до и после изменения времени.

Тогда как с этим справиться?

Я хочу, если пользователь меняет время на +2 часа, затем на все еще чтобы показать эти 5 часов до события, а не 3.

Я использую Calendar.getInstance().time.time для проверки своего времени.

И бывает, что системное время 15:00, событие будет 20 : 00, пользователь меняет время на 19:00, и приложение показывает, что событие будет через час.

1 Ответ

2 голосов
/ 05 февраля 2020

Если вы получаете время в UT C, вы можете сравнить его с временем UT C (которое, конечно, не go вперед и назад). Используя java.time все проще.

Например:

 Instant fromServer = serverTime.toInstant(ZoneOffset.UTC);
 Instant now = Instant.now();
 long diff = now.until(fromServer, ChronoUnit.HOURS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...