У меня есть простое мобильное приложение, которое планирует будущие события между людьми в указанном месте. Эти события могут быть физическими или виртуальными, поэтому время, указанное для события, может или не может находиться в том же часовом поясе, что и «место» события. Например, физическая встреча может быть назначена для двух человек в Лондоне на 10 часов утра по местному времени в указанный день. В качестве альтернативы, звонок в Skype может быть запланирован для двух человек в разных часовых поясах в 16:00 (в часовом поясе одного человека) в указанную дату, хотя «местом» события является просто «офис», что означает два разных места в разных часовых поясах.
Интересно, что для этого приложения подойдет следующий дизайн:
На клиенте он просит пользователя ввести местную дату и время и указать часовой пояс, локальный для события.
На сервере он преобразует местную дату и время с указанным часовым поясом в метку времени в формате UTC и сохраняет только эту метку времени.
Когда клиент извлекает эти данные, он получает только временную метку UTC и преобразует ее в местное время в том же часовом поясе, что и текущий часовой пояс клиента. Текущий часовой пояс клиента определяется текущим параметром часового пояса системы, который, я думаю, автоматически настраивается в зависимости от местоположения клиента (конечно, при условии, что клиент подключен к мобильной сети).
Мои основные мотивы для этого дизайна:
UTC - это абсолютный и универсальный стандарт времени, и вы можете конвертировать в / из него из / в любой часовой пояс.
Пользователи заботятся только о местной дате и времени в часовом поясе, в котором они сейчас находятся.
Это осуществимый дизайн? Если нет, то какие конкретные сценарии могут нарушить работу приложения или серьезно повлиять на взаимодействие с пользователем? Критика приветствуется.