首页 > 代码库 > 熟用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