Tracy JS 小笔记 - 日期对象,定时器

日期对象

  • 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);

你可能感兴趣的:(js,javascript,html)