【发布时间】:2014-08-30 14:06:10
【问题描述】:
我了解最佳做法是将 UTC 日期/时间存储在我们的数据库中,并以当地时区显示给用户。我们将存储时区而不是偏移量,以便支持夏令时。
哪种方式最适合处理时区?
选项 1:服务器仅使用 UTC,客户端转换为时区
以 HTML 格式发送到浏览器的所有日期均采用 UTC。客户端将使用 moment.js 或类似文件将 UTC 时间转换为正确的时区。将使用我们数据库中指定的时区而不是浏览器的本地时间,因为这可能不正确。
用户提交日期或时间时,必须先转换为UTC时间,然后再提交给服务器。
选项 2:服务器转换为时区
所有计算仍以 UTC 进行,并且在可能的最后一刻将日期/时间转换为正确的时区,例如在以 HTML 格式输出日期时。
当客户端提交任何日期/时间时,应立即转换为 UTC。
还有其他方法吗?
【问题讨论】:
-
您应该始终从
htaccess或从服务器php.ini设置UTC。此外,在数据库中,日期应为UTC。这样所有的日期都是一样的。您可以使用MySQL和PHP来操作日期而无需转换。唯一的转化发生在您向用户列出日期时。 -
@machineaddict 我在问在客户端或服务器端转换日期是否是最佳做法。即我们是让服务器只说 UTC 还是应该处理时区转换?
-
根据我上面解释的方法,日期完全从服务器端处理。因此,服务器只在
UTC中交谈。 -
@machineaddict 如果服务器只以 UTC 进行通信,那么我们依赖 Javascript 在页面加载时更改日期字符串?
-
如果您的用户已注册,他们可以选择他们的时区。如果用户是客人,您可以使用 javascript 更改日期以对应他们的计算机时区,显示服务器时区,或者您可以从他们的 ip 猜测他们的时区。一个想法是看看像
vBulettin或phpBB这样的脚本如何根据用户状态(访客/登录)处理他们的时间。我的下一个项目必须是这样,所以我可能会在其中实现您的最佳答案。
标签: php asp.net date datetime timezone