Date对象是 JAVAScript原生的时间库。它以1970年1月1日00:00:00作为时间的零点,可以表示的时间范围是前后各1亿天(单位为毫秒)。
Date对象的创建:
Date可以当作构造函数使用。对它使用new命令,会返回一个Date对象的实例;如果不加参数,实例代表的就是当前时间。
var today = new Date();
today.toString();
// Sun Feb 23 2020 15:09:42 GMT+0800 (中国标准时间)
// 对Date实例求值,返回的是一个字符串,代表该实例对应的时间。
日期的处理:
oDate.getDate(); // 返回一个月中的某一天 (1 ~ 31)
oDate.getDay(); // 返回一周中的某一天 (0 ~ 6)
oDate.getMonth(); // 返回月份 (0 ~ 11)
oDate.getFullYear(); // 以四位数字返回年份
作为构造函数时,Date对象可以接受多种格式的参数,返回一个该参数对应的时间实例:
// 参数为时间零点开始计算的毫秒数
new Date(1378218728000); //(最常用)
// 代表年、月、日、小时、分钟、秒、毫秒
new Date(2020, 1, 23, 0, 0, 0, 0)
// Sun Feb 23 2020 00:00:00GMT+0800
// 参数也可以是一个字符串(最常用)
// 日期字符串应该符合RFC 2822和ISO 8061这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ格式
new Date('2020-2-23');
new Date('2020/2/23');
new Date('02/23/2020');
new Date('2020-FEB-23');
new Date('FEB, 23, 2020');
new Date('Feberuary, 23, 2020');
new Date('23 Feb 2020');
new Date('23, Feberuary, 2020');
// 上面多种日期字符串的写法,返回的都是同一个时间
获取日期时间:
注意,月份从0开始计算,但是,天数从1开始计算。另外,除了日期的默认值为1,小时、 分钟、秒钟和毫秒的默认值都是0。
oDate.getDate(); // 返回一个月中的某一天 (1 ~ 31)
oDate.getDay(); // 返回一周中的某一天 (0 ~ 6)
oDate.getMonth(); // 返回月份 (0 ~ 11)
oDate.getFullYear(); // 以四位数字返回年份
oDate.getHours(); // 返回当前小时(0-23)
oDate.getMinutes(); // 返回当前分钟 (0 ~ 59)
oDate.getSeconds(); //返回当前秒(0 ~ 59)
oDate.getMillisenconds();// 返回当前毫秒(0 ~ 999)
oDate.getTime(); //返回1970年1月1日至今的毫秒数
设置日期时间:
这些参数如果超出了正常范围,就会被自动折算。比如,如果月设为15,就折算为下一年的4月
oDate.setDate(); //设置月中的某一天 (1 ~ 31)
oDate.setMonth(); //设置月份 (0 ~ 11)
oDate.setFullYear(); //设置年份(四位数)
oDate.setHours(); //设置小时(0-23)
oDate.setMinutes(); //设置分钟 (0 ~ 59)
oDate.setSeconds(); //设置秒(0 ~ 59)
oDate.setMillisenconds(); //设置毫秒(0 ~ 999)
oDate.setTime(); //设置1970年1月1日至今的毫秒数
日期的运算:
类型自动转换时,Date实例如果转为数值,则等于对应的毫秒数;
如果转为字符串,则等于对应的日期字符串。
所以,两个日期实例对象进行减法运算时,返回的是它们间隔的毫秒数;进行加法运算时,返回的是两个字符串连接而成的新字符串。
var d1 = new Date(2020, 2, 23);
var d2 = new Date(2020, 3, 29);
d2 - d1
// 518400000
d2 + d1
// Sun Mar 29 2020 00:00:00 GMT+0800 (中国标准时间)Mon Mar 23 2020 00:00:00 GMT+0800 (中国标准时间)
静态方法:
Date.parse():方法用来解析日期字符串,返回该时间距离时间零点(1970年1月1日 00:00:00)的毫秒数。
日期字符串应该符合 RFC 2822 和 ISO 8061 这两个标准,即YYYY-MM-DDTHH:mm:ss.sssZ格式,其中最后的Z表示时区。但是,其他格式也可以被解析,例如:
Date.parse('Dec 8, 2010')
Date.parse('January 20, 2020 12:32:13')
Date.parse('Mon, 12 Dec 2020 13:30:00 GMT')
Date.parse('Mon, 21 Dec 2020 13:30:00 +0430')
Date.parse('2010-10-10')
Date.parse('2012-12-10T12:12:00')
setInterval(func,time):
有两个参数,第一个参数是一个函数,第二个参数是时间间隔,单位是毫秒;
每间隔time毫秒,会执行一次函数。
// setInterval的返回值是一个数字
function box(){
console.log(1)
}
var timer = setInerval(box,1000);
// 上面代码意思是,每间隔1000毫秒,box函数执行一次。
setTimeout(func,time):
第一个参数func是将要推迟执行的函数名,第二个参数time是推迟执行的毫秒数。
setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
btn.onclick= function(){
setTimeout (function(){
alert("我出现在2秒后");
},2000)
}
clearTimeout():取消延时器
clearInterval():取消定时器
setTimeout()和setInterval函数,都返回一个整数值,表示计数器编号。将该整数传入clearTimeout和clearInterval函数,就可以取消对应的定时器。
var f1 = setTimeout(f, 1000);
var f2 = setInterval(f, 1000);
clearTimeout(f1);
clearInterval(f2);
// 上面代码中,回调函数f不会再执行了,因为两个定时器都被取消了。