js中的Date類型是使用UTC(國際協調時間)自1970年1月1日午夜(零時)開始,通過的毫秒數來保存日期。html
1. 建立日期對象 ---> 得到當前日期和時間 var now = new Date();web
--->基於制定的日期和時間建立 var date = new Date(year,month,day,hour,minute,second);spa
須要注意的就是,Date.prototype中的方法都是基於UTC時間的,因此這些方法中month(0-11)、day(1-31)、星期幾(0表示星期日,6表示星期六)、hour(0-23)、minute(0-59)、second(0-59)。prototype
2.方法 Date.parse()、Date.UTC()----將日期字符串解析爲毫秒數的方法;code
Date.now()----返回調用這個方法時的日期和時間的毫秒數;htm
toDateString()/toTimeString()/toLocaleDateString()/toLocaleTimeString()/toUTCString()----將日期格式化爲特定字符串的方法。對象
Date類型的方法(mdn):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Dateblog
找兩個題目練練手:ip
Q.1 實時顯示當前時間utf-8
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>