以前Date对象用的不多,对它的了解只是简单的获取年,月,日,时,分,秒等。由于今天要写一个倒计时的jquery插件,给了我彻底掌握它的动力……
一.新建日期对象
(1)无参创建
var date1 = new Date();
console.log(date1); //Mon Mar 27 2017 14:18:50 GMT+0800 (中国标准时间)
console.log(date1.valueOf()); //1490595530038
1.直接创建new Date(),获取本机时间
2.valueof(),返回Date对象的员原始值(距1970年1月1日的毫秒值)
(2)参数:毫秒
var date2 = new Date(1400000000000);
console.log(date2); //Wed May 14 2014 00:53:20 GMT+0800 (中国标准时间)
(3)一个参数:字符串
var date3 = new Date("2017-02-02 08:08:08");
console.log(date3); //Thu Feb 02 2017 08:08:08 GMT+0800 (中国标准时间)
(4)多个参数:数值
var date4 = new Date(2017,02,02,08,08,08);
console.log(date4); //Thu Mar 02 2017 08:08:08 GMT+0800 (中国标准时间)
(5)其他情况
var date5 = new Date(2017,02,02);
console.log(date5); //Thu Mar 02 2017 00:00:00 GMT+0800 (中国标准时间)
var date6 = new Date("2017-02-02 08:08");
console.log(date6); //Thu Feb 02 2017 08:08:00 GMT+0800 (中国标准时间)
var date7 = new Date("2017-02-02 08:");
console.log(date7); //Thu Feb 02 2017 08:00:00 GMT+0800 (中国标准时间)
var date8 = new Date(2017,02,02,09);
console.log(date8); //Thu Mar 02 2017 09:00:00 GMT+0800 (中国标准时间)
1.未指定的默认为0
2.字符串形式:只指定小时,后面要有冒号,不然会报错,如date7
二.获取(当前日期的年月日时分秒)
var date = new Date();
console.log(date); //Mon Mar 27 2017 11:08:05 GMT+0800 (中国标准时间)
console.log(date.getFullYear()); //2017 (四位数字返回年份)
console.log(date.getMonth()); //2 (0~11,用的时候+1)
console.log(date.getDate()); //27 (1~31月的日期)
console.log(date.getUTCDate());
console.log(date.getDay()); //1 (0~6周的星期,用的时候+1)
console.log(date.getHours()); //11 (0~23小时,注意时间本身就是从0开始的,不需要+1)
console.log(date.getMinutes()); //8 (0~59分钟,同上)
console.log(date.getSeconds()); //5 (0~59秒,同上)
console.log(date.getMilliseconds());//219 (0~999毫秒,同上)
1.UTC是世界标准时,和GMT(格林威治时间)是一样的。
2.把get换成getUTC,就是获取世界标准时的时间日期。(可把测试一下小时,或把本地时间修改到凌晨测试一下日期)
三.设置(当前日期的年月日时分秒)
var date = new Date();
date.setFullYear(2016);
date.setMonth(3);
date.setDate(31);
date.setHours(10);
date.setMinutes(0);
date.setSeconds(12);
date.setMilliseconds(300);
console.log(date); //Sun May 01 2016 10:00:12 GMT+0800 (中国标准时间)
注意:我上面设置的4月31日,4月只有30天的,它自动转成了5月1日
四.获取/设置时间到1970年1月1日的毫秒数
var date1 = new Date();
console.log(date1.getTime()); //1490587123430 (返回1970年1月1日至今的毫秒数)
var date2 = new Date();
date2.setTime(110000000000); //Wed Jun 27 1973 11:33:20 GMT+0800 (中国标准时间)
console.log(date2);
console.log(Date.UTC(2017,08,12)); //1505174400000 参数(year,month,day,hours,minutes,seconds,ms)
//并且是Date的静态方法。返回1970年1月1日到设定日期的毫秒数)
五.日期转为字符串
var date = new Date();
var str1 = date.toString();
console.log(str1); //Mon Mar 27 2017 13:01:18 GMT+0800 (中国标准时间)
console.log(typeof str1); //string
var str2 = date.toDateString();
console.log(str2); //Mon Mar 27 2017
var str3 = date.toTimeString();
console.log(str3); //13:01:18 GMT+0800 (中国标准时间)
var str4 = date.toUTCString();
console.log(str4); //Mon, 27 Mar 2017 05:01:18 GMT
var str5 = date.toLocaleString();
console.log(str5); //2017/3/27 下午1:01:18
var str6 = date.toLocaleTimeString();
console.log(str6); //下午1:01:18
var str7 = date.toLocaleDateString();
console.log(str7); //2017/3/27
日期转成纯数字用local比较方便
六.字符串转日期
var d1 = Date.parse("2017/08/08");
console.log(d1); //1502121600000
var d2 = Date.parse("2017-08-08");
console.log(d2); //1502150400000
var d3 = Date.parse("Aug 8,2017");
console.log(d3); //1502121600000
var d4 = Date.parse("2017@08@08");
console.log(d4); //1502121600000
console.log(new Date(1502150400000));//Tue Aug 08 2017 08:00:00 GMT+0800 (中国标准时间)
console.log(new Date(1502121600000));//Tue Aug 08 2017 00:00:00 GMT+0800 (中国标准时间)
七.倒计时案例
function countDown(){
var startTime = new Date().valueOf(),
endTime = Date.parse("2017-03-28 15:00:00"),
restTime = endTime - startTime,
day,hour,minute,second;
day = Math.floor((restTime/(1000*60*60*24)));
hour = Math.floor(restTime/(1000*60*60)%24);
minute = Math.floor(restTime/(1000*60)%60);
second = Math.floor(restTime/1000%60);
var str = "剩余"+day+"天"+hour+"小时"+minute+"分钟"+second+"秒";
console.log(str);
setTimeout(countDown,1000);
}
countDown();