时间对象和倒计时

一、时间对象

  1、在写一些东西的时候,经常需要获取 “当前系统的时间对象”

      2、要创建一个时间对象,使用new操作符和Date构造函数new Date();

      3、返回值:返回表示日期的毫秒数

      4、在调用Date构造函数而不传递参数的情况下,新创建的对象自动获取当前日期和时间

      5、如果想根据特定的日期和时间创建日期对象,必须要传入参数,ECMAScript提供了两个方法:

       (1) Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。如果传入Date.parse()方法的字符串不能表示日期,那么它会返回NaN.

           如果直接把将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()。换句话说,下面的两行代码是等价的:
           var t = new Date(Date.parse('December 28,2015'));
           var t = new Date('December 28,2015');

       (2) Date.UTC()方法同样也返回表示当前日期的毫秒数。

           参数中,只有前两个参数(年和月)必须的,如果没有提供代表月份的参数,则默认为1;如果其余参数(时、分、秒)都没提供,则默认为0,也就是午夜零时 。

           下面的两行代码也是等价的:
           var t = new Date(Date.UTC(2015,11,28,15,29,30));   //(注意:月份是基于0开始的,一月是0,二月是1... 以此类推)
           var t = new Date(2015,11,28,15,29,30);             // 注意:这里是将表示日期的参数直接传递给Date构造函数里,但这行代码是基于系统设置的本地时区创建的

   6、如果你想获取到其他的一些信息:(以下所有的 typeof 都是 number数据类型,因此得到的结果都是数字

    var iYear = myTime.getFullYear();                //  年

    var iMonth = myTime.getMonth()+1;          //  月    注意:getMonth 的一月份是从零开始计算的,因此必须要在后面加1才会准确。

    var iDate = myTime.getDate();                  //  日

    var iWeek = myTime.getDay();                 //  星期      // 0,1,2,3,4,5,6

      注意:因此数据类型是number,所以星期一显示出来的是数字1,星期二是数字2,依次类推.... 而星期日显示的则是数字0;

    var iHours = myTime.getHours();            //  小时

    var iMin = myTime.getMinutes();           //  分钟

    var iSec = myTime.getSeconds();          //  秒

  7、 对于星期来说,要做一个判断,让0等于星期日,让数字都变成'星期几'的文字;

    if(iWeek===0)iWeek='星期日';

    if(iWeek===1)iWeek='星期一';

    if(iWeek===2)iWeek='星期二';

    if(iWeek===3)iWeek='星期三';

    if(iWeek===4)iWeek='星期四';

    if(iWeek===5)iWeek='星期五';

    if(iWeek===6)iWeek='星期六';

二、定时器:在某一定的时间之内发生一件事,就是定时器(具有时间的概念)。

  var timer = setInterval( 函数、毫秒 );        // 在规定的时间内重复执行

  clearInterval( timer );                                 // 清除

 

  var timer = setTimerout( 函数、毫秒);      // 在规定的时间后只执行一次

  clearTimeout(timer);                                  // 清除

三、倒计时

  1、首先要明白什么的倒计时,未来的时间点(不变的)和 现在的时间点(可变的)的差

    var iNow = new Date();

    // 如果说想找到未来的时间点,new Date 的括号里是可以放参数的,设置一个未来的时间点

    // 参数分为两种形式: (数字形式和字符串形式,两者选一)

      1、数字形式:new Date(2015,11,24,15,40,30)      // 这里要记住月份是从0开始的,所以如果这月是12月份的话,写的时候要写成11月

    var iNew = new Date(2015,11,24,15,40,30); 

      2、字符串形式:new Date( 'December 24,2015 15:40:30' )  

    var iNew = new Date( 'December 24,2015 15:40:30' ); 

    月份的英文单词(January、February、March、April、May、June、July、August、September、October、November、December)

    // 求出未来时间点和现在时间点的差:

    var t = Math.floor(iNew-iNow)/1000;      

    注意: iNew-iNow相减之后是以毫秒为单位的,因此要除以1000,改为以秒为单位;

       这里是不能有小数点的存在,所以要用到向下取整Math.floor;

  2、公式:

    倒计时要用到时分秒:1分钟=60秒,1小时=3600秒,1天=86400秒;

    按照以秒来计算的话:

    天:Math.floor(t/86400);

    时:Math.floor(t/86400/3600);

    分:Math.floor(t/86400%3600/60);

    秒:t%60; 

  3、用字符串拼接起来:

    var str = Math.floor(t/86400) + '天' + Math.floor(t/86400/3600) + '时' + Math.floor(t/86400%3600/60) + '分' + t%60 + '秒';

原文地址:https://www.cnblogs.com/effieduo/p/5065038.html