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

 mobiledu2502883647 发布于 2022-11-19 12:43
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 个回答
  • 格林尼治 0 时也就是本地同日 8 时,你的 diff 也就是(本地 8 时 - 本地 0 时),就是 8 个小时咯……

    2022-11-19 13:14 回答
  • 这个一个时间参照的选择问题

    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();
    2022-11-19 13:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有