彻底搞懂时间问题

最近工作遇到了这个问题,之前反复整改,自己不够重视,这次终于吃了一次大亏。

timestamp

时间戳的定义:从197011000秒(UTC时间,及0时区)起至现在的总秒数。
只能一直存在的疑问是,时区问题,其实这个时间戳的概念是根本不存在时区问题的。全球各地的时间戳都是一样的。也就是说,从197011000秒(UTC时间,及0时区)开始,全球各地同时开始计数,所以这个数字不管到哪里都是一样。

UTC时间

这个就跟时区有关了。又称为协调世界时,和0时区的时间一致。

东八区

这个就是北京时间了。

JS中关于时间的一些转换

JS中一般都要用Date对象:

1
new Date();

这个在windows系统上,得到的时间是本机设定的时区时间。大家一般都是东八区。
得到时间戳:

1
new Date().getTime();

如果已经有了时间戳,可以这样得到对应的UTC时间:

1
new Date(xxxxxx).toISOString();

这样得到的时间格式是这样的:

1
"2019-01-09T16:37:34.662Z"

题外话:ES查询时,如果传入一个时间戳,他会根据你ES机器的时区进行转换(如果你数据存储的时候用的是utc时间),MDZZ。