我正在开发一个客户端-服务器移动应用程序(电子购物),并且无法确定向客户端显示估计的包裹到达时间时要使用哪个时间源。 我倾向于检索在服务器上生成的时间值,并将其转换为设备时区,以解决客户端设备上的时间设置不正确的情况。 但是,设备上的时区也可以设置为不同。 是否有任何公认的良好做法?
您描述的时间戳应该以UTC(世界标准时间)存储在服务器上
在服务器上生成基于UTC的值-与服务器的时区设置无关 。
将这些基于UTC的时间戳以机器可读的格式传输到您的客户端,该格式保留时间戳为UTC的上下文。 最好是ISO-8601时间戳记,例如2018-05-09T18:00Z
( Z
表示UTC)。
在客户端设备上,将该时间戳转换为所需的时区。 对于移动设备,选择设备的时区是合理的。 恕我直言,担心客户的时区设置是否正确完全是不合理的 。 时区是用户控制的首选项。 如果将其设置为其他时区,则应使用该时区。 您不应该尝试过度补偿。
使用客户端设备的首选本地化设置,将时间戳记格式化为易于阅读的字符串,并向用户显示。
关于该主题的更多内容已经编写。 从这里开始 。
将估计时间与您的服务器时间一起存储并保存,并在应用程序本身中将其重新计算为设备时间。 因此,您的数据在存储/数据库中保持一致,但是每个用户都会显示其时区。