zoukankan      html  css  js  c++  java
  • 熟用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之iframe子页面与父页面通信
    PHP安全编程:HTTP请求欺骗
    PHP安全编程:防止SQL注入
    PHP多种序列化/反序列化的方法
    empty(),isset()与is_null()的实例测试
    &nbsp|&quot|&amp|&lt|&gt等html字符转义
    手把手叫你SQL注入攻防(PHP语法)
    HTTP协议详解
    Cache缓存机制与文件缓存原理PHP2
    数据变成了真正的生产资料,而且是人类第一次没有依赖大自然,单纯依靠自身行为获得的生产资料。
  • 原文地址:https://www.cnblogs.com/skylar/p/4014305.html
Copyright © 2011-2022 走看看