Время устройства против времени сервера в мобильном приложении - что является хорошей практикой - PullRequest
0 голосов
/ 09 мая 2018

Я занимаюсь разработкой мобильного приложения клиент-сервер (e-shopping) и не могу решить, какой источник времени использовать при отображении примерного времени прибытия пакета клиенту. Я склоняюсь к извлечению значения времени, сгенерированного на сервере, и преобразованию его в часовой пояс устройства, чтобы обойти случаи, когда время на устройстве клиента установлено неправильно. Однако часовой пояс на устройстве также может быть установлен по-другому. Есть ли общепринятая хорошая практика в этом отношении?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Временные метки, такие как те, которые вы описываете, должны храниться в единицах UTC (Всемирное координированное время) на вашем сервере

  1. Создание значений UTC на вашем сервере - которые не зависят от настройки часового пояса сервера.

  2. Передайте эти основанные на UTC временные метки вашему клиенту в машиночитаемом формате, который сохраняет контекст, в котором временная метка находится в UTC. Предпочтительно, отметки времени ISO-8601, такие как 2018-05-09T18:00Z (Z обозначает UTC).

  3. На клиентском устройстве преобразуйте эту временную метку в нужный часовой пояс. В случае мобильных устройств разумно выбрать часовой пояс устройства. Было бы весьма неразумным ИМХО интересоваться, правильно ли установлен часовой пояс клиента. Часовой пояс является предпочтением пользователя. Если установлен другой часовой пояс, то это часовой пояс, который следует использовать. Вы не должны пытаться сверхкомпенсировать.

  4. Отформатируйте метку времени в виде строки, удобной для чтения человеком, используя предпочтительные настройки локализации клиентского устройства, и покажите ее пользователю.

Многое еще на эту тему уже написано. Начните здесь .

0 голосов
/ 09 мая 2018

Сохраните и сохраните расчетное время с вашим временем сервера и пересчитайте его до времени устройства в самом приложении. Таким образом, ваши данные остаются согласованными в хранилище / БД, но у каждого пользователя отображается его часовой пояс.

...