【发布时间】:2015-09-17 20:55:10
【问题描述】:
我有一个脚本来存储用户执行的操作。有一列包含日期时间,最初我使用的是 NOW(),但它使用的是服务器时间,与用户的实际时间相比,这要少几个小时。
所以我决定利用 JS 所能获得的时间。我是这样格式化的:
var now = new Date(),
isnow = now.getFullYear() + '-' + ('0' + (now.getMonth() + 1)).slice(-2) + '-' + ('0' + now.getDate()).slice(-2) + ' ' + ('0' + (now.getHours() + 1)).slice(-2) + ':' + ('0' + now.getMinutes()).slice(-2) + ':' + ('0' + now.getSeconds()).slice(-2);
我已经测试过,虽然格式可以正常工作,但时间差了一个小时。是因为夏令时吗?如何获取用户的实际当地时间?
【问题讨论】:
-
您应该使用 UTC,以便时间独立于用户的系统设置(假设时钟准确)。这消除了时区的任何问题,但系统时钟可能未设置为正确的时间。
-
你使用
now.getHours() + 1而不是now.getHours()有什么原因吗? -
同意@RobG ...我一直都在 GMT/UTC 然后 client-js UTC 时间 与 server-sql
CURRENT_TIMESTAMPUTC 时间相同,甚至尽管客户端和服务器时钟显示不同的本地时间。 (“CURRENT_TIMESTAMP”是 ANSI 方式,而 NOW() 是特定于 mysql 的)。然后您的客户端 javascript 可以获取从服务器获取的 UTC 时间并以本地时间显示。
标签: javascript php mysql