JavaScript中的Date类型-计算时间差
接触JavaScript不久,今日想写一个简单的秒表练练手,于是就想当然的写下了如下代码:
var date = new Date(currTime.getTime() - beginTime.getTime());
// currTime.getTime()=1329655993149 beginTime.getTime()=1329655991421
var hour = date.getHours();
结果比较出乎我的意料,hour变量的值并不是我所期望的,hour的值是8。currTime和beginTime变量实际的时间差也就2秒钟哪来的8个小时?!经过一番思索和搜索,我发现原因是因为在JavaScript中并没有类似于TimeSpan这种类型的变量,而DateTime类型又是从1970年1月1日开始计时的。
所以我生成的那个date变量其实是1970年1月1日0时0分1秒728毫秒,Date所存的毫秒数有是独立于时区的,是一个UTC+0的时间。当我的浏览器调用getHours()函数时,将这个时间转换成我本地设置的时区也就是UTC+8,所以得到的时间是1970年1月1日8时0分1秒728毫秒。这就是为什么会得到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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述