mobile - 移动应用程序上的设备时间与服务器时间 - 什么是好的做法
问题描述
我正在开发一个客户端-服务器移动应用程序(电子购物),并且在向客户端显示估计的包裹到达时间时无法决定使用什么时间源。我倾向于检索服务器上生成的时间值并将其转换为设备时区,以解决客户端设备上的时间设置不正确的情况。但是,设备上的时区也可以设置不同。是否有任何普遍接受的良好做法?
解决方案
诸如您描述的时间戳之类的时间戳应以 UTC(协调世界时)的形式存储在您的服务器上
在您的服务器上生成基于 UTC 的值 - 这些值与服务器的时区设置无关。
以机器可读的格式将这些基于 UTC 的时间戳传输到您的客户端,该格式保留时间戳在 UTC 中的上下文。最好是 ISO-8601 时间戳,例如
2018-05-09T18:00Z
(Z
表示 UTC)。在客户端设备上,将该时间戳转换为所需的时区。对于移动设备,选择设备的时区是合理的。恕我直言,关心客户的时区是否设置正确是非常不合理的。时区是用户控制的首选项。如果它设置为其他时区,那么这就是应该使用的时区。你不应该试图过度补偿。
使用客户端设备的首选本地化设置将时间戳格式化为人类可读的字符串,并将其显示给用户。
关于这个主题的更多内容已经写过。 从这里开始。
推荐阅读
- bash - 修改 sed 以便将唯一的文件部分分配给变量
- gmail-addons - Gmail 插件 - 未调用来自 newOpenLink 的回调
- javascript - 使 infowindow 在鼠标悬停时出现,但在 infowindow 上悬停时不会消失
- mysql - 无法订购特定 ID
- tensorflow - Tensorflow,嵌入表示问题,虚假最近邻
- angular - 在 Angular Material 中使用 @Input 装饰器在模板中显示
- python - Numpy 值错误:使用序列设置数组元素
- r - 如何按R中的值和键对列表进行排序?
- apache-camel - 通过注解引用 Karaf 上的声明式服务
- java - 从 Logstash 输出到事件中心很慢