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();
    }
}

 

转载于:https://www.cnblogs.com/imjustice/archive/2012/02/19/2623912.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值