深入理解javascript的getTime()方法

1、理解getTime

getTime() 方法返回一个间的格林威治时间数值。

可以使用这个方法一个日期时间赋值给另一个Date 对象。

语法:

dateObj.getTime() 参数:

无。

返回值:

getTime 方法的返回值一个数值,表示从1970年1月1日0时0分0秒(UTC,即协调世界时)距离该日期对象所代表时间的毫秒数。

例子:

使用 getTime() 复制日期对象

创建一个拥有相同时间值的日期对象。

rush:js;"> var birthday = new Date(1994,12,10); var copy = new Date(); copy.setTime(birthday.getTime());

测试结果如下:

image

既然表示从1970年1月1日开始计算的毫秒数,如果小于1970年呢,会是什么情况?(测试结果如下,是负数)

image

2、应用场景

2.1 测量代码执行时间

连续调用两个新生成的日期对象的 getTime 方法,根据两次调用的返回值求得时间差。这可以用于计算某些操作的执行时间。

rush:js;"> var end,start,i; start = new Date(); for (i = 0; i < 100000; i++) { Math.sqrt(i); } end = new Date();

console.log("Operation took " + (end.getTime() - start.getTime()) + " msec");

在chrome浏览器中进行测试:

image

2.2 甘特图时间表示

最近在调整teamwork gantt中,发现,是一个task任务项的开始时间与结束时间,都是用一个整数表示,而该数值就是UTC表示法。格式如下:

rush:js;"> {"tasks":[ {"id":-1,"name":"Gantt editor","code":"","level":0,"status":"STATUS_ACTIVE","canWrite":true,"start":1396994400000,"duration":21,"end":1399672799999,"startIsMilestone":true,"endisMilestone":false,"collapsed":false,"assigs":[],"hasChild":true},{"id":-2,"name":"coding","level":1,"duration":10,"end":1398203999999,"startIsMilestone":false,"description":"","progress":0,{"id":-3,"name":"gantt part","level":2,"duration":2,"end":1397167199999,"depends":"","hasChild":false},{"id":-4,"name":"editor part","status":"STATUS_SUSPENDED","start":1397167200000,"duration":4,"end":1397685599999,{"id":-5,"name":"testing","start":1398981600000,"duration":6,{"id":-6,"name":"test on safari","end":1399327199999,"depends":"8SF:11",{"id":-7,"depends":"8SF",{"id":-8,"name":"test on ie","start":1400688000000,"duration":3,"end":1400947199999,{"id":-9,"name":"test on chrome","start":1399327200000,"end":1399499999999,"links":"",{"id":-10,{"id":-11,{"id":-12,{"id":-14,{"id":-15,{"id":-16,{"id":-17,"end":1399586399999,{"id":-18,"hasChild":false} ],"selectedRow":0,"canWriteOnParent":true}

在甘特图中,使用getTime表示时间有以下优势:

计算两个时间差比较方便 数据存储结构比较简单 由于gantt涉及到画图,使用整型数据方便处理

3、浏览器的兼容性

使用js要收到浏览器的限制,不同浏览器对js类库的支持强弱也不同。而作为标准类库Date的一个方法,其适应的浏览器如下:

image

image

4、参考资料

Date.prototype.getTime():https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...