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





Сохраните и сохраните расчетное время вместе со своим серверным временем и пересчитайте его во время устройства в самом приложении. Таким образом, ваши данные остаются согласованными в хранилище / БД, но у каждого пользователя отображается его часовой пояс.
Метки времени, такие как те, которые вы описываете, должны храниться в формате UTC (всемирное координированное время) на вашем сервере.
Сгенерируйте значения на основе UTC на вашем сервере - которые являются независимый настройки часового пояса сервера.
Передайте эту метку времени на основе UTC вашему клиенту в машиночитаемом формате, который сохраняет контекст, в котором метка времени находится в формате UTC. Предпочтительно временные метки ISO-8601, такие как 2018-05-09T18:00Z (Z указывает UTC).
На клиентском устройстве преобразуйте эту метку времени в нужный часовой пояс. В случае мобильных устройств выбор часового пояса устройства является разумным. Было бы довольно необоснованный IMHO заботиться о том, правильно ли установлен часовой пояс клиента. Часовой пояс определяется пользователем. Если он установлен в другой часовой пояс, то следует использовать именно этот часовой пояс. Вы не должны пытаться компенсировать это слишком сильно.
Отформатируйте метку времени как строку, удобочитаемую, используя предпочтительные параметры локализации клиентского устройства, и покажите это пользователю.
Многое по этой теме уже написано. Начните здесь.