首页 > 代码库 > 熟用js中的Date
熟用js中的Date
js中的Date类型是使用UTC(国际协调时间)自1970年1月1日午夜(零时)开始,经过的毫秒数来保存日期。
1. 创建日期对象 ---> 获得当前日期和时间 var now = new Date();
--->基于制定的日期和时间创建 var date = new Date(year,month,day,hour,minute,second);
需要注意的就是,Date.prototype中的方法都是基于UTC时间的,所以这些方法中month(0-11)、day(1-31)、星期几(0表示星期日,6表示星期六)、hour(0-23)、minute(0-59)、second(0-59)。
2.方法 Date.parse()、Date.UTC()----将日期字符串解析为毫秒数的方法;
Date.now()----返回调用这个方法时的日期和时间的毫秒数;
toDateString()/toTimeString()/toLocaleDateString()/toLocaleTimeString()/toUTCString()----将日期格式化为特定字符串的方法。
Date类型的方法(mdn):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
找两个题目练练手:
Q.1 实时显示当前时间
1 function timer(){2 var now = new Date();3 var time = document.getElementById(‘timer‘);4 var text = now.getFullYear()+‘年‘+(now.getMonth()+1)+‘月‘+now.getDate()+‘日‘+now.getHours()+‘时‘+now.getMinutes()+‘分‘+now.getSeconds()+‘秒‘;5 time.innerHTML = text;6 }7 setInterval(timer,1000);
使用setTimeout()实现相同的计时效果(在执行时间上会有问题):
1 function showTime(){2 var time = new Date();3 console.log(time.toString());4 setTimeout(showTime,1000);5 }6 7 showTime();
Q.2 实现XX年还剩多少天
1 function remainTimer(){ 2 var now = new Date(); 3 var year = now.getFullYear(); 4 var total = new Date(year,11,31,23,59,59); 5 //这一年中还剩下的秒数 6 var remain = (total-now)/1000; 7 var day = Math.floor(remain/(60*60*24)), 8 hour = Math.floor(remain%(60*60*24)/(60*60)), 9 minute = Math.floor(remain%(60*60*24)%(60*60)/60),10 second = Math.floor(remain%(60*60*24)%(60*60)%60);11 var text = year+‘年还剩‘+day+‘天‘+hour+‘小时‘+minute+‘分钟‘+second+‘秒‘;12 var time = document.getElementById(‘timer‘);13 time.innerHTML = text; 14 }15 setInterval(remainTimer,1000);
之前看到微博上阿里的大神的分享《date in web》。学了点皮毛,自己写了下,笔记:
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset=utf-8> 5 <title>Date-Year</title> 6 </head> 7 <style> 8 </style> 9 <body>10 <div id="timer"></div>11 <script>12 //一天中有这些毫秒13 var msPerDay = 86400000;14 //给一个毫秒数,看它是多少天15 function Day(t){16 return Math.floor(t/msPerDay);17 }18 console.log(‘946684800000毫秒是()天:‘+Day(946684800000));19 function TimeWithInDay(t){20 return t%msPerDay;21 }22 console.log(‘946684800001毫秒多少天后余()秒:‘+TimeWithInDay(946684800001));23 //年份无非就分为闰年和不是闰年,闰年366天,不是闰年365天。24 // 而闰年的特征就是,能被4整除且不能被100整除或者能被400整除。25 function DaysInYear(y){26 if(y%4 !== 0){27 return 365;//不能被4整除,则365天28 }else if(y%100 !== 0){29 return 366;//能被4整除且不能被100整除,则366天,闰年30 }else if(y%400 !== 0){31 return 365;//不能被400整除,则365天32 }else{33 return 366;//能被400整除,则366天,闰年34 }35 }36 console.log(‘2000年一共有()天:‘+DaysInYear(2000));37 //从1970年开始到y年,一共经过了多少天(我还没有确切的明白这里为什么要这样做)38 function DayFromYear(y) {39 return 365 * (y - 1970) +40 Math.floor((y - 1969) / 4) -41 Math.floor((y - 1901) / 100) +42 Math.floor((y - 1601) / 400);43 }44 console.log(‘从1970到2000年经过了()天:‘+DayFromYear(2000));45 //从1970年开始到y年,一共经过了多少毫秒46 function TimeFromYear(y){47 return msPerDay * DayFromYear(y);48 }49 console.log(‘从1970年到2000年经过了()毫秒:‘+TimeFromYear(2000))50 //给一个时间t这是从1970年开始经过了多少年51 function YearFromTime(t){52 var y = 1970;53 //TimeFromYear(y),逐渐获得从1970年开始一年内的毫秒数,两年内的毫秒数....(可以看t落在哪个范围内了)54 //大神说这个不是完全的准确55 while(t>TimeFromYear(y)){56 y++;57 }58 return y;59 }60 console.log(‘946684800000毫秒是从1970年到()年经过的:‘+YearFromTime(946684800000));61 console.log(‘1412846287654毫秒是从1970年到()年经过的:‘+YearFromTime(1412846287654));62 //给一个毫秒数,看他从1970年经过了..年,现在是几几年,这个年份是不是闰年63 function InLeapYear(t){64 return (DaysInYear(YearFromTime(t))===366)?true:false;65 }66 console.log(‘从1970年经过946684800000毫秒后的这一年是不是闰年:‘+InLeapYear(946684800000)); 67 </script>68 </body> 69 </html>
熟用js中的Date