首页 > 为什么Date.UTC取得的值比Date.parse取得的值还大

为什么Date.UTC取得的值比Date.parse取得的值还大

var UTC = Date.UTC(2000,1,1,0,0,0)             //949363200000
var local = Date.parse('2000/2/1 00:00:00')    //949334400000

var diff = (UTC - local)/1000/3600            //8

我的疑问是,为什么UTC的值别本地时间的值还大呢?东8区的时间不是比格林尼治标准时间快8个小时吗,为什么UTC的时间还大一点呢?


这个一个时间参照的选择问题

var UTC = Date.UTC(2000,1,1,0,0,0)             //949363200000

当执行以上语句的时候,输入的时间是以格林尼治当地的时间为参照物来计算时间,那么格林尼治的2000年2月1号0点0分0秒,就是我们北京时间的2000年2月1号 8点0分0秒,
返回的UTC是一个从标准时间1970/01/01 0点开始计算的毫秒数

var local = Date.parse('2000/2/1 00:00:00')    //949334400000
var UTC = Date.UTC(2000,0,31,16,0,0);//949334400000

执行这语句时,输入的时间是以本地时间为参照物也就是北京时间,那么北京时间2000年2月1号0点0分0秒,换算成格林尼治标准时间就为 2000年1月31号16点0分0秒,
返回local是一个从标准时间1970/01/01 0点开始计算的毫秒数

var diff = (UTC - local)/1000/3600            //8

那么大家都换算成标准时间的话local的就要慢8个小时.
要相同,那么大家采用下相同的参照物,把UTC的输入时间往前8个小时,或local时间输入往后8小时
我们看到在时间的字符创表示中有类似 GMT+0800信息,它就是表示显示的时间比标准时间快8个小时
如:
时间字符处表示:Sun Jan 10 2016 10:45:57 GMT+0800 (CST)
毫秒数表示为:1452393957448
标准时间UTC字符串表示为:Sun, 10 Jan 2016 02:45:57 GMT

new Date(1452393957448).toUTCString();

格林尼治 0 时也就是本地同日 8 时,你的 diff 也就是(本地 8 时 - 本地 0 时),就是 8 个小时咯……

【热门文章】
【热门文章】