zoukankan      html  css  js  c++  java
  • 时间对象 <-> 定时器 <-> 电子时钟 <-> 倒计时效果

    时间对象: new Date()
        获取当前用户的本地时间(用户的本地时间是不可靠的)

    在真正的开发中,要获取服务器的时间(相对安全)

    时间戳:
    1970年01月01日00时00分00秒到当前的时间

    new Date().getTime(); //number类型
    Date.now()
    + new Date

    2018年10月27日,12点43分00秒

    下面获取的时间都是数字类型:
    获取当前的年份:
    t.getFullYear()

    获取当前的月份
    t.getMonth()
    注意:
    获取来的值少1个月份,所以要加1

    获取日
    t.getDate()

    获取周几
    t.getDay() 周日为0

    获取小时:
    t.getHours()

    获取分钟:
    t.getMinutes()

    获取秒:
    t.getSeconds()
    例子:在页面中显示当前时间 ==> 2018年10月28日----周日----21点46分42秒
     1     let arr = ['周日','周一','周二','周三','周四','周五','周六'];
     2     console.log(['周日','周一','周二','周三','周四','周五','周六'][new Date().getDay()])
     3     function fn(){
     4         let t = new Date();
     5         let y = t.getFullYear();
     6         let m = tDou(t.getMonth()+1);
     7         let d = tDou(t.getDate());
     8         let h = tDou(t.getHours());
     9         let mi = tDou(t.getMinutes());
    10         let se = tDou(t.getSeconds());
    11         p.innerHTML = y + '年' + m + '月' + d + '日----' + arr[t.getDay()]+'----'  + h +'点'+ mi +'分'+ se +'秒';
    12     }
    13     fn(); //上来直接执行,第一下不会闪
    14     setInterval(fn,1000);
    15     /*
    16         小于10补0
    17     */
    18     function tDou(n){
    19         return n<10?'0'+n:''+n;
    20     }
    倒计时原理: 
    1.未来的时间
    2.现在的时间(每分每秒都在动)

    未来的时间 - 现在的时间 = 剩下多少时间

    new Date(工作时这儿放服务器时间);

    设置时间:
    字符串:
    new Date('年 月 日 时:分:秒')
    new Date('2018 10 27 15:40:00')

    数字版:
    new Date(年,月,日,时,分,秒)
    new Date(2018,9,27,15,40)

    注意:
    设置月份的时候要减1
    转换公式:
    1 let d = Math.floor(t/86400);
    2 t %= 86400;
    3 let h = Math.floor(t/3600);
    4 t %= 3600;
    5 let m = Math.floor(t/60);
    6 t %= 60;

    例子:在页面中显示到未来某个时间的倒计时   ==>   00天17时37分50秒

     1 let newdate = new Date('2018 10 28 16:00:00');  //未来的时间 
     2     let timer = null;
     3     function fn(){
     4         let nowDate = new Date(); //现在的时间
     5         let t = Math.floor((newdate - nowDate)/1000);
     6         if(t <= 0){
     7             //如果未来的时间 - 现在的时间 小于0,说明现在的时间已经超过了设置的时间,所以关闭定时器
     8             clearInterval(timer);
     9         }else{
    10             let d = Math.floor(t/86400);   //1
    11             t %= 86400;  
    12             let h = Math.floor(t/3600);
    13             t %= 3600;
    14             let m = Math.floor(t/60);
    15             t %= 60;
    16             p.innerHTML = tDou(d)+'天'+tDou(h)+'时'+tDou(m)+'分'+tDou(t)+'秒';
    17         }
    18     }
    19 
    20     fn();//上来就先调用一次,避免有闪的现象
    21 
    22     timer = setInterval(fn,1000);//开启定时器
    23 
    24     function tDou(n){  //补零
    25         return n<10?'0'+n:''+n;
    26     }

    求 一个月有多少天,这个月有几天?
      let d = new date
      d.setDate(1)//先设置成一号,避免出现计算下下个月的天数的情况
              (比如1月30天,而2月最大28天,此时用这个方法会跳过2月,进入3月份,)
      d.setMonth(d.getMonth()+1) //设置成下个月

      d.setDate(0) //代表上个月的最后一天 等于知道了这个月有多少天
      console.log(d.getDate())
  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/9867678.html
Copyright © 2011-2022 走看看