熟用js中的Date

     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>

 

相關文章
相關標籤/搜索