一、时间对象
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 + '秒';