移动应用程序上的设备时间与服务器时间 - 什么是好的做法
Device time vs server time on mobile application - what is the good practice
我正在开发客户端-服务器移动应用程序(电子购物),无法决定在向客户端显示预计包裹到达时间时使用哪个时间源。我倾向于检索在服务器上生成的时间值并将其转换为设备时区,以解决客户端设备上的时间设置不正确的情况。但是,设备上的时区也可能设置不同。是否有任何普遍接受的良好做法?
使用您的服务器时间存储并保留估计时间,并在应用程序本身中将其重新计算为设备时间。因此,您的数据在 storage/DB 中保持一致,但每个用户都显示了他的时区。
您描述的时间戳应以 UTC(协调世界时)形式存储在您的服务器上
在您的服务器上生成基于 UTC 的值 - 独立于 服务器的时区设置。
将这些基于 UTC 的时间戳以机器可读的格式传输到您的客户端,该格式保留时间戳在 UTC 中的上下文。最好是 ISO-8601 时间戳,例如 2018-05-09T18:00Z
(Z
表示 UTC)。
在客户端设备上,将该时间戳转换为所需的时区。对于移动设备,选择设备的时区是合理的。恕我直言,担心客户的时区设置是否正确是相当不合理的。时区是用户控制的首选项。如果将其设置为其他时区,则应使用该时区。你不应该试图过度补偿。
使用客户端设备的首选本地化设置,将时间戳格式化为人类可读的字符串,并将其显示给用户。
关于这个话题已经写了很多。 Start here.
我正在开发客户端-服务器移动应用程序(电子购物),无法决定在向客户端显示预计包裹到达时间时使用哪个时间源。我倾向于检索在服务器上生成的时间值并将其转换为设备时区,以解决客户端设备上的时间设置不正确的情况。但是,设备上的时区也可能设置不同。是否有任何普遍接受的良好做法?
使用您的服务器时间存储并保留估计时间,并在应用程序本身中将其重新计算为设备时间。因此,您的数据在 storage/DB 中保持一致,但每个用户都显示了他的时区。
您描述的时间戳应以 UTC(协调世界时)形式存储在您的服务器上
在您的服务器上生成基于 UTC 的值 - 独立于 服务器的时区设置。
将这些基于 UTC 的时间戳以机器可读的格式传输到您的客户端,该格式保留时间戳在 UTC 中的上下文。最好是 ISO-8601 时间戳,例如
2018-05-09T18:00Z
(Z
表示 UTC)。在客户端设备上,将该时间戳转换为所需的时区。对于移动设备,选择设备的时区是合理的。恕我直言,担心客户的时区设置是否正确是相当不合理的。时区是用户控制的首选项。如果将其设置为其他时区,则应使用该时区。你不应该试图过度补偿。
使用客户端设备的首选本地化设置,将时间戳格式化为人类可读的字符串,并将其显示给用户。
关于这个话题已经写了很多。 Start here.