В моем предыдущем посте по этому поводу мы представили и обсудили идею поддержки часовых поясов, особенно в приложениях, предназначенных для использования в/из разных частей мира. Если все ваши пользователи находятся в одном часовом поясе, то все имеют в виду одно и то же время, когда говорят 8 вечера. В Кении 8pm означает 17pm GMT+3.

Мы также сказали, что в JavaScript, например, вы можете автоматически добавлять часовой пояс к каждой строке даты и времени, получая смещение в минутах, конвертируя его в часы и минуты и добавляя его к строке даты и времени. Для Кении смещение будет равно -180 минутам, что составляет 3 часа 0 минут.

2021–01–01T0800 (без учета часового пояса) становится 2021–01–01T0800+0300 (с учетом часового пояса).

Тематическое исследование

Пользователь в Кении (GMT+3) обычно назначает визит своей матери к врачу каждый вторник в полдень (12 часов дня) по местному времени. В одну из пятниц он едет в Лондон (GMT+1) на неделю.

Когда он идет, чтобы запланировать еженедельную встречу по вторникам в приложении для своей матери, что он намеревается указать, находясь в Лондоне? 12 часов? Однако, если приложение автоматически заполняет часовой пояс, как было предложено ранее в JavaScript, это ставит нас в затруднительное положение. Обычно он имеет в виду 12:00+03:00, но теперь он вводит 12:00+01:00, что означает 14:00 по местному времени. Его мать придет на 2 часа раньше на еженедельную встречу.

В этом случае только опытный пользователь мог бы ввести 10:00+01:00 по Гринвичу, чтобы представить точно такое же время, если бы приложение автоматически заполняло информацию о часовом поясе.

Должен ли конечный пользователь отслеживать часовые пояса, когда он пересекает регионы? Нет, это усложняет задачу для простого пользователя, который хотел сделать заказ на 12:00 по местному времени Кении.

Решение

Мы с другом (и коллегой) обсуждали эту проблему и решили проверить, что Google делает со своим календарем. Есть блестящее поле, которое я упустил из виду, несмотря на то, что годами пользуюсь календарем.

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

Предоставление пользователям раскрывающегося списка/селектора делает немного очевидным, в каких часовых поясах работает ваше приложение. С помощью этого решения пользователь в примере может просто переключить свой часовой пояс с GMT+1 на GMT+3, а затем сделать заказ как обычно.

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

УЧИТЬСЯ. РАСТИ. ПРОСПЕР.

Джордж Ниоро – ведущий инженер полного цикла в удаленной команде, а также подрабатывает пианистом/клавишником в Найроби. Ньоро начал заниматься python в 2010 году, в 2016 году перешел на полный стек, а в 2020 году перешел в докер со swarm. Он окончил факультет мехатроники JKUAT.