假设我需要捕获订单,并且需要保存人们下订单的时间戳。此外,我需要一种方法来根据用户请求密码重置代码的时间来跟踪令牌何时设置为过期。我的服务器位于德克萨斯州,如何容纳遍布美国的用户?我想做的最后一件事是问他们在哪个时区,所以我不确定如何处理以 UTC 显示的时间,这会让普通人感到困惑。
问问题
56 次
1 回答
2
首先,您应该将display与storage隔离。仅仅因为您以特定方式存储值并不意味着您必须以这种方式显示它。
其次,考虑一下您实际捕获的内容:它是一个时间戳。“现在”的全球理念。时区在这里无关紧要 - 不同时区的两个合理的人会就他们中的哪一个先下订单达成一致,无论他们的时区如何。
因此,将时间戳存储在 UTC 中感觉完全合理。事实上,时间戳几乎总是最好以 UTC 格式存储。只有当您询问用户对日期/时间的想法时,当地时间有时才有意义。
至于如何在用户本地时间显示值 - 这很棘手:
- 您可以根据他们的收货地址等猜测
- 您可以根据他们的 IP 地址猜测(可能有一些有趣的问题)
- 您可以猜测一次并将其存储在首选项中,以便他们可以在必要时进行修复
- 您可以在 Javascript 中执行此操作,提供 UTC 值,然后在客户端将其转换为本地时间
(当然,在猜测时区时,您始终可以使用 UTC 到 Javascript 中的本地转换来帮助使猜测准确。)
于 2012-06-24T20:09:32.097 回答