javascript - 为什么Date.UTC取得的值比Date.parse取得的值还大
黄舟
黄舟 2017-04-10 16:47:14
[JavaScript讨论组]
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的时间还大一点呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

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

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();
PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号