再读斋

JavaScript⑥引用类型Date

创建Date对象

  • “月/日/年”,如 6/13/2004;
  • “英文月名 日,年”,如 January 12,2016;
  • “英文星期几 英文月名 日 年 时:分:秒 时区”,如 Tue May 25 2004 00:00:00 GMT-0700。
  • YYYY-MM-DD HH:mm:ss.sss
1
2
3
4
5
6
7
8
9
10
11
12
var testDate1 = new Date();
var testDate2 = new Date("9/13/2016");
var testDate3 = new Date("09/13/2016");
var testDate4 = new Date("January 12,2016");
var testDate5 = new Date("Tue May 25 2016 00:00:00 GMT-0700");
var testDate6=new Date("2004-05-25 00:01:02");
console.log("testDate1",testDate1);
console.log("testDate2",testDate2);
console.log("testDate3",testDate3);
console.log("testDate4",testDate4);
console.log("testDate5",testDate5);
console.log("testDate6",testDate6);

计算程序的耗时

Data.now() 方法,返回表示调用这个方法时的日期和时间的毫秒数。这个方法简化了使用 Data 对象分析代码的工作;

1
2
3
4
5
6
7
8
9
//取得开始时间
var start = Date.now();
//调用函数
for(var i=0;i<10000000;i++){
}
//取得停止时间
var end = Date.now();
console.log(end-start);

支持 Data.now() 方法的浏览器包括 IE9+、Firefox 3+、Safari 3+、Opera 10.5 和 Chrome。在不支持它的浏览器中,使用+操作符把 Data 对象转换成字符串,也可以达到同样的目的。

1
2
3
4
5
6
7
8
9
//取得开始时间
var start = +Date.now();
//调用函数
for(var i=0;i<10000000;i++){
}
//取得停止时间
var end = +Date.now();
console.log(end-start);

日期的比较

原理:比较的是转成毫秒数后,然后再比较毫秒数;日期越靠后,毫秒数越大;
Date 类上有一个 valueOf() 方法,返回日期的毫秒表示(距离1970年午夜的毫秒差)。

如下;

1
2
3
4
5
6
7
8
9
var testDate1=new Date("8/13/2016");
var testDate2=new Date("9/13/2016");
var testDate3=new Date("1/1/1970");
console.log(testDate1 > testDate2);//false
console.log(testDate1 < testDate2);//true
console.log(testDate1.valueOf());//1471017600000
console.log(testDate2.valueOf());//1473696000000
console.log(testDate3.valueOf()-testDate3.getTime());//1473696000000

日期格式化

  • toDateString()——以特定于实现的格式显示星期几、月、日和年;
  • toTimeString()——以特定于实现的格式显示时、分、秒和时区;
  • toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;
  • toLocaleTimeString()——以特定于实现的格式显示时、分、秒;
  • toUTCString()——以特定于实现的格式完整的 UTC 日期。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var date = new Date();
console.log(date.toDateString());
console.log(date.toTimeString());
console.log(date.toLocaleDateString());
console.log(date.toLocaleTimeString());
console.log(date.toUTCString());
/**
*Mon Jun 19 2017
13:49:00 GMT+0800 (CST)
6/19/2017
1:49:00 PM
Mon, 19 Jun 2017 05:49:00 GMT
*/

Date的常用方法

  • getTime(); //返回表示日期的毫秒数
  • getFullYear();//获取四位年
  • getMonth();//获取月0-11代表1-12月;用的时候,记得补1;
  • getDate();//获取日期月份中的天数(1~31)
  • getDay();//获取星期0-6代表周日-周六
  • getHours();//获取小时
  • getMinutes();//获取分
  • getSeconds();//获取秒
  • getMilliseconds();//获取毫秒
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
console.log(date.getTime());
console.log(date.getFullYear()+"年");
console.log(date.getMonth()+1+"月");
console.log(date.getDate()+"日");
console.log(date.getHours()+"时");
console.log(date.getMinutes()+"分");
console.log(date.getSeconds()+"秒");
/**
1497851952517
2017年
6月
19日
13时
59分
12秒
*/
刘涤生 wechat