• JavaScript中的Date类型计算时间差



    接触JavaScript不久,今日想写一个简单的秒表练练手,于是就想当然的写下了如下代码:


    var date = new Date(currTime.getTime() - beginTime.getTime());
    // currTime.getTime()=1329655993149 beginTime.getTime()=1329655991421
    var hour = date.getHours();

    结果比较出乎我的意料,hour变量的值并不是我所期望的,hour的值是8currTimebeginTime变量实际的时间差也就2秒钟哪来的8个小时?!经过一番思索和搜索,我发现原因是因为在JavaScript中并没有类似于TimeSpan这种类型的变量,而DateTime类型又是从197011日开始计时的。

    所以我生成的那个date变量其实是197011001728毫秒,Date所存的毫秒数有是独立于时区的,是一个UTC+0的时间。当我的浏览器调用getHours()函数时,将这个时间转换成我本地设置的时区也就是UTC+8,所以得到的时间是197011801728毫秒。这就是为什么会得到8的原因了。

    JavaScript中如果需要计算两个时间的差只能乖乖的通过将两个时间相减得到一个毫秒差,然后手动计算得到。写了一个timeSpan伪类来将时间差转换为有意义的时间。

    function timeSpan(msec) {
        var milliseconds = msec;
        this.getDays = function () {
            return Math.floor(this.getHours() / 24);
        }
        this.getHours = function () {
            return Math.floor(this.getMinutes() / 60);
        }
        this.getMinutes = function () {
            return Math.floor(this.getSeconds() / 60);
        }
        this.getSeconds = function () {
            return Math.floor(milliseconds / 1000);
        }
        //以下是获取时间间隔的具体部分?
        this.getMillisecondPart = function () {
            return milliseconds - this.getSeconds() * 1000;
        }
        this.getSecondPart = function () {
            return this.getSeconds() - 60 * this.getMinutes();
        }
        this.getMinutePart = function () {
            return this.getMinutes() - 60 * this.getHours();
        }
        this.getHourPart = function () {
            return this.getHours() - 24 * this.getDays();
        }
    }
  • 相关阅读:
    Spring AOP
    Spring Bean的生命周期
    MySQL中的SQL的常见优化策略
    垃圾收集器
    JWT
    Zookeeper
    RabbitMQ原理介绍
    kafka 安装配置
    kafka 简介
    ELK logstash 各种报错
  • 原文地址:https://www.cnblogs.com/imjustice/p/2623912.html
Copyright © 2020-2023  润新知