【发布时间】:2016-11-16 00:24:19
【问题描述】:
我试图了解当客户端和服务器的时区可能不同时,在客户端和服务器上使用 Javascript 创建日期会如何影响查询结果。
在客户端,我使用Date.now() 来保存时间戳信息
var time = Date.now()
console.log(time);
now() 方法返回自 1970 年 1 月 1 日以来经过的毫秒数 00:00:00 UTC 到现在为止作为数字。
我的理解是这个时间戳独立于任何时区偏移量,换句话说,它指向Zero timezone offset 的时间。 正确吗?。
我们也可以使用下面的代码获取这个时间戳
var now = new Date();
time = now.getTime();
console.log(time);
此代码仍然提供相同的时间戳信息(在零时区偏移处)。 Date.now() 只是一种快速获取时间戳的方法吗?
现在,从Date.now() 构造日期并将其显示在浏览器的控制台中。
var time = Date.now()
console.log(time);
var date = new Date(time)
var time = date.getTime()
console.log(time);
console.log(date);
在我看来,只有在浏览器的控制台中显示时,日期才会在浏览器的本地时区中格式化,否则这个日期实例仍然在零时区偏移处保存时间戳。 正确吗?。
我也看到converting Javascript date to UTC的回复
var now = new Date();
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
time = now_utc.getTime();
console.log(time);
此代码仍然提供与Date.now() 和console.log 语句相同的时间戳信息,仅相差几毫秒,我认为这是由于代码执行时间而不是任何时区差异。执行时,该时间实例的输出如下:
1468408292575
1468388492000
UTC时间戳和Date.now()给出的时间戳有区别吗?
您能否确认这三个选项是否产生相同的结果(即独立于任何时区),以及当客户端和服务器处于不同时区时使用此时间戳信息进行交互是否安全。例子:
- 客户端向服务器端发送保存请求以保存客户端生成的时间戳?
- 客户端根据这个保存的时间戳请求结果?
我想将其减少到我只想显示时区信息以用于显示目的的级别,例如在 HTML 中,在生成的文件中。
我的问题可能太简单了,因为我对正确使用 Date class documentation 来避免时差问题感到困惑。
【问题讨论】:
-
它们之间没有区别,只是 Date.now() 不需要你创建一个新对象
-
它们返回自 1970 年以来经过的毫秒数。1 月 1 日。00.00.00 GMT 0
标签: javascript date datetime