(70)Wangdao.com第十一天_JavaScript 日期對象 Date

日期對象 Date瀏覽器

表示一個時間函數

Date 對象是 JavaScript 原生的時間庫性能

    • 它以1970年1月1日00:00:00做爲時間的零點,能夠表示的時間範圍是先後各1億天(單位爲毫秒)
    • 時間零點(1970年1月1日 00:00:00)

 

  • 獲取當前時間戳,計算機保存時間都是用的時間戳
    • time = Date.now();

      從格林威治標準時間1970年1月1日至今日此行代碼執行,的毫秒數。測試

    • 能夠利用時間戳來測試代碼性能
      • time_start = Date.now();    // 獲取執行本行代碼的時間戳
        // 被測 代碼塊
        time_end = Date.now();    // 獲取執行本行代碼的時間戳
        
        console.log(time_end-time_start+"毫秒");

 


 

  • 用做普通函數調用  返回當前時間的字符串
    • 無論有沒有參數,返回的都是本行代碼運行時的時間
    • Date();    
      // "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"
      
      Date(2000, 1, 1);    
      // "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

 


  • 用做構造函數 不帶參數 建立一個 Date 對象
    • var d = new Date(); document.write(d); // 打印的是執行本行代碼時的本機時間
      // 的實例,直接求值等同於調用方法
      // Wed Sep 26 2018 20:55:25 GMT+0800 (中國標準時間)DatetoString
  • 用做構造函數 帶參數 建立一個指定時間的時間對象
    • var dd = new Date("01/20/1996 12:00:00");
      
      document.write(dd);    // Sat Jan 20 1996 12:00:00 GMT+0800 (中國標準時間)
    • 參數能夠是負整數,表明1970年元旦以前的時間
    • 只要是能被 Date.parse()方法解析的字符串,均可以看成參數
      • new Date('2013-2-15');
        new Date('2013/2/15');
        new Date('02/15/2013');
        new Date('2013-FEB-15');
        new Date('FEB, 15, 2013');
        new Date('FEB 15, 2013');
        new Date('Feberuary, 15, 2013');
        new Date('Feberuary 15, 2013');
        new Date('15 Feb 2013');
        new Date('15, Feberuary, 2013');
        // Fri Feb 15 2013 00:00:00 GMT+0800 (CST)

        // 月:0表示一月,依次類推,11表示12月。
        // 日:1到31。    日期設爲0,就表明上個月的最後一天
        // 小時:0到23。
        // 分鐘:0到59。
        // 秒:0到59
        // 毫秒:0到999ui

        // 除了日期的默認值爲,小時、分鐘、秒鐘和毫秒的默認值都是10
        // 這些參數若是超出了正常範圍,會被自動折算。好比,若是月設爲15,就折算爲下一年的4月
        // 參數還可使用負數,表示扣去的時間15

         

    • 參數爲年、月、日等多個整數時,年和月是不能省略的,其餘參數均可以省略的。也就是說,這時至少須要兩個參數,由於若是隻使用「年」這一個參數,Date會將其解釋爲毫秒數
    • 日期的運算時,減法返回間隔的毫秒數,加法返回拼接的字符串。

 


 

  • 靜態方法
    • Data.now()
      • 返回當前時間距離時間零點(1970年1月1日 00:00:00 UTC)的毫秒數,至關於 Unix 時間戳乘以1000
    • Data.parse()
      • 用來解析日期字符串,返回該時間距離時間零點(1970年1月1日 00:00:00)的毫秒數
      • 日期字符串應該符合 RFC 2822 和 ISO 8061 這兩個標準,即 YYYY-MM-DDTHH:mm:ss.sssZ 格式,其中最後的Z表示時區。
      • 可是,其餘格式也能夠被解析,請看下面的例子
        • 若是解析失敗,返回NaN
        • Date.parse('Aug 9, 1995');
          Date.parse('January 26, 2011 13:51:50');
          Date.parse('Mon, 25 Dec 1995 13:30:00 GMT');
          Date.parse('Mon, 25 Dec 1995 13:30:00 +0430');
          Date.parse('2011-10-10');
          Date.parse('2011-10-10T14:48:00');

           

    • Data.UTC()
      • Date.UTC() 方法的參數,會被解釋爲 UTC 時間(世界標準時間)Date() 構造函數的參數會被解釋爲當前時區的時間
      • 受年、月、日等變量做爲參數,返回該時間距離時間零點(1970年1月1日 00:00:00 UTC)的毫秒數
        • // 格式
          Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]]); // 用法
          Date.UTC(2011, 0, 1, 2, 3, 4, 567);    // 1293847384567

           


 

  • 實例方法
    • valueOf()
      • 返回實例對象距離時間零點(1970年1月1日00:00:00 UTC)對應的毫秒數,該方法等同於getTime方法
        var d = new Date();
        
        d.valueOf();    // 1362790014817
        d.getTime();    // 1362790014817

         

    • toString()
      • 若是直接讀取Date實例,就至關於調用這個方法
      • 即實例求值的時候,默認調用的是toString()方法。
      • 這致使對Date實例求值,返回的是一個字符串,表明該實例對應的時間。
        var today = new Date();
        
        today
        // "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"
        
        // 等同於
        today.toString()
        // "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"

         

    • get 類實例方法
        • dd.getFullYear(); // 獲取 幾年 dd.getYear()距離1900的年數 dd.getMonth(); // 獲取 幾月, 0表示1月,11表示12月 dd.getDate(); // 獲取 幾日 dd.getDay(); // 獲取星期幾,星期日爲0,星期一爲1  dd.getHours(); // 獲取 時 0-23 dd.getMinutes(); // 獲取 分 0-59 dd.getSeconds(); // 獲取 秒 0-59 dd.getMilliSeconds(); // 獲取 毫秒 0-999  dd.getTime(); // 獲取 時間戳 實例距離1970年1月1日00:00:00的毫秒數,等同於方法
          // 返回當前時間與 UTC 的時區差別,以分鐘表示,返回結果考慮到了夏令時因素
          valueOfgetTimezoneOffset()
        • 獲取從1996年1月20日的時間戳
          • var dd = new Date("01/20/1996 00:00:00");
            
            var hs = dd.getTime();
            console.log(hs);    // 822067200000

             

        • var d = new Date('January 6, 2013');
          
          d.getDate();    // 6
          d.getMonth();    // 0
          d.getYear();    // 113
          d.getFullYear();    // 2013
          
          d.getTimezoneOffset();    // -480
          // 返回-480,即 UTC 時間減去當前時間,單位是分鐘。
          // -480表示 UTC 比當前時間少480分鐘,即當前時區比 UTC 早8個小時

           

        • 自定義函數 計算本年度還剩下多少天
          function leftDays() {
              var today = new Date();
              var endYear = new Date(today.getFullYear(), 11, 31, 23, 59, 59, 999);
              var msPerDay = 24 * 60 * 60 * 1000;
              return Math.round( (endYear.getTime() - today.getTime()) / msPerDay);
          }

           

      • 如下 .getUTC* 方法返回 UTC 時間
        • dd.getUTCFullYear();    // 獲取UTC 幾年 dd.getYear()距離1900的年數
          dd.getUTCMonth();    // 獲取UTC 幾月, 0表示1月,11表示12月
          dd.getUTCDate();    // 獲取UTC 幾日
          dd.getUTCDay();    // 獲取UTC 星期幾,星期日爲0,星期一爲1
           dd.getUTCHours(); // 獲取UTC 時 0-23
          dd.getUTCMinutes();    // 獲取UTC 分 0-59
          dd.getUTCSeconds();    // 獲取UTC 秒 0-59
          dd.getUTCMilliSeconds();    // 獲取UTC 毫秒 0-999

           

    • set 類實例方法        設置實例對象的各個方面
        • setYear(year); 設置距離1900年的年數。 setFullYear(year [, month, date]); 設置四位年份。 setMonth(month [, date]); 設置月份(0-11)。 setDate(date); 設置實例對象對應的每月的幾號(1-31),返回改變後毫秒時間戳。 setHours(hour [, min, sec, ms]); 設置小時(0-23)。 setMinutes(min [, sec, ms]); 設置分鐘(0-59)。 setSeconds(sec [, ms]); 設置秒(0-59)。 setMilliseconds(); 設置毫秒(0-999)。 setTime(milliseconds); 設置毫秒時間戳。
          沒有方法,由於星期幾是計算出來的,而不是設置的
          setDay

          setUTCDate()spa

          setUTCFullYear()prototype

          setUTCHours()code

          setUTCMilliseconds()對象

          setUTCMinutes()blog

          setUTCMonth()

          setUTCSeconds()

           

    • to  類實例方法
      • Date.prototype.toUTCString()
        • 返回對應的 UTC 時間,也就是比北京時間晚8個小時
          var d = new Date(2013, 0, 1);
          
          d.toUTCString();    // "Mon, 31 Dec 2012 16:00:00 GMT"

           

      • Date.prototype.toISOString()
        • 返回對應時間的 ISO8601 寫法
        • // 返回的老是 UTC 時區的時間
          var d = new Date(2013, 0, 1);
          
          d.toISOString();    // "2012-12-31T16:00:00.000Z"

           

      • Date.prototype.toJSON()
        • 返回一個符合 JSON 格式的 ISO 日期字符串,與toISOString方法的返回結果徹底相同
      • Date.prototype.toDateString()
        • 返回日期字符串(不含小時、分和秒)
      • Date.prototype.toTimeString()
        • 返回時間字符串(不含年月日)
          var d = new Date(2013, 0, 1);
          d.toTimeString();     // "00:00:00 GMT+0800 (CST)"

           

      • Date.prototype.toLocaleString()
        • 將 Date 實例轉爲表示完整的本地時間字符串
      • Date.prototype.toLocaleDateString()
        • 將 Date 實例轉爲表示本地時間(不含小時、分和秒)的字符串
      • Date.prototype.toLocaleTimeString()
        • 將 Date 實例轉爲表示本地時間(不含年月日)的字符串
          var d = new Date(2013, 0, 1);
          
          d.toLocaleString()
          // 中文版瀏覽器爲"2013年1月1日 上午12:00:00"
          // 英文版瀏覽器爲"1/1/2013 12:00:00 AM"
          
          d.toLocaleDateString()
          // 中文版瀏覽器爲"2013年1月1日"
          // 英文版瀏覽器爲"1/1/2013"
          
          d.toLocaleTimeString()
          // 中文版瀏覽器爲"上午12:00:00"
          // 英文版瀏覽器爲"12:00:00 AM"

          這三個方法都有兩個可選的參數

            • var d = new Date(2013, 0, 1);
              
              d.toLocaleString('en-US');    // "1/1/2013, 12:00:00 AM"
              d.toLocaleString('zh-CN');    // "2013/1/1 上午12:00:00"
              
              d.toLocaleDateString('en-US');    // "1/1/2013"
              d.toLocaleDateString('zh-CN');    // "2013/1/1"
              
              d.toLocaleTimeString('en-US');    // "12:00:00 AM"
              d.toLocaleTimeString('zh-CN');    // "上午12:00:00"


              var d = new Date(2013, 0, 1); // 時間格式 // 下面的設置是,星期和月份爲完整文字,年份和日期爲數字 d.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); // "Tuesday, January 1, 2013" // 指定時區 d.toLocaleTimeString('en-US', { timeZone: 'UTC', timeZoneName: 'short' }); // "4:00:00 PM UTC" d.toLocaleTimeString('en-US', { timeZone: 'Asia/Shanghai', timeZoneName: 'long' }); // "12:00:00 AM China Standard Time" // 小時週期爲12仍是24 d.toLocaleTimeString('en-US', { hour12: false }); // "00:00:00" d.toLocaleTimeString('en-US', { hour12: true }); // "12:00:00 AM"
相關文章
相關標籤/搜索