日期对象
- getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6: 0 代表礼拜天,其他正常)
- getMonth() 从 Date 对象返回月份 (0 ~ 11)。 这个值 + 1 之后才是我们正常的月份
- getTime() 最常用,最有用的。 返回 1970 年 1 月 1 日至今的毫秒数,计算机的纪元时间。
它可以用来记录"时间戳",比如查看一个循环执行了多长时间
var firstime = new Date().getTime();
for(var i = 0; i <= 1000000; i ++);
var secondTime = new Date().getTime();
console.log(secondTime - firstime); - set time 的各种方法可以用来设置一个倒数时间,秒杀之类的
var date = new Date(); date.setMinutes(3); //根据世界时返回 Date 对象的分钟 (0 ~ 59)。 var timer = setInterval(function(){ if (date.getTime() - new Date().getTime() < 1000) //不到一秒了 { console.log("到点儿了") clearInterval(timer); } },1000);
-
日期对象是系统提供的 var myDate = new Date() //它不是时时的,它只记录它出生的那一刻的时间 Date.prototype.getCurrentDate = function(){ console.log("当前时间是" + this.getFullYear() + "年" + (this.getMonth() + 1) + "月" + this.getDate() + "日" + this.getHours() + "时" + this.getMinutes() + "分" + this.getSeconds() + "秒 星期" + getXingQi(this.getDay())) function getXingQi(n){ switch(n){ case 1 : return "一"; case 2 : return "二"; case 3 : return "三"; case 4 : return "四"; case 5 : return "五"; case 6 : return "六"; case 0 : return "日"; } } } myDate.getCurrentDate();
定时器
- setInterval(function(){}, 1000); 每隔 1秒执行这个函数,但是其实它是不准的 它就是每隔 1000毫秒,把函数扔到执行队列后面,具体函数什么时候被执行,它是控制不了的
var timer = setInterval(function(){ mydiv.style.width = parseInt(mydiv.style.width) + 1 +"px"; if (a>b) clearInterval(timer); //停止计时 }, 1000); var time = 1000; setInterval(function(){}, time); //这里 time 只取一次值 time = 2000;//这里改了,我们的计时器间隔仍然会 keep 在 1000 那,不会被改,
- setTimeout(function(){}, 1000); 推迟 1秒在执行且只执行一次
var timer = setTimeout(function(){}, 30000); //非会员电影可以试看30秒, 30秒之后永久关闭观看权限
if (...) clearTimeout(timer);// 如果用户30秒内登入了会员,就中断执行函数
注意,即使没有设置后面的时间, setTimeOut 中的函数也是被排在该函数的执行队列的最后了
既如下的打印顺序为 : a c b -
console.log("a"); setTimeout(() => {console.log("b");}) console.log("c");
- 定时器都是 window 上的方法,内部函数 this 指向 window
setTimeout(function(){console.log(this);}, 30000); - 无论是 setTimeout 还是 setInterval 都可以不写函数直接在字符串里写 JS 代码
setInterval("console.log('a')", 1000);