了解日期對象

我們在項目中經常會有獲取當前時間的地方;下面了解一下js怎么獲取和設置時間吧!
首先我們先了解日期和時間的一些概念:

1.1 GMT時間

? GMT(Greenwich mean time 格林尼治標準時間,格林威治標準時間,格林尼治平均時間):是指位于英國倫敦郊區(qū)的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那里的經線。自1924年2月5日開始,格林尼治天文臺每隔一小時會向全世界發(fā)放調時信息。世界上發(fā)生的重大時間都是以格林尼治時間時間為標準的。

比如:我們用的北京時間,因為北京是東八區(qū),所以我們的事件比GMT事件早八個小時。我們這里是8點早上,格林威治還是夜里0點呢。

1.2 UTC時間

? UTC(Coordinated Universal Time 協調世界時間) 協調世界時是以原子時秒長為基礎,在時刻上盡量接近于世界時的一種時間計量系統。

? 原子時與以往的計時系統不同,它非常精確并且不以某地的平均太陽時為基準,但是遇有地球自轉速度不均勻,原子時與世界時之間的時差便日積月累,因 此,UTC 會在一段時期后加上正或負的閏秒來補償。因此協調世界時與國際原子時(TAI) 之間會出現若干整數秒的差別。位于巴黎的國際地球自轉事務中央局(ERS)負責決定何時加入閏秒。

二、創(chuàng)建日期對象

JavaScript中的 Date 類型是在早期 Java 中的 java.util.Date 類基礎上構建的。為此, Date類型使用自 UTC 1970 年 1 月 1 日午夜(零時)開始經過的毫秒數來保存日期。在使用這種數據存儲格式的條件下, Date 類型保存的日期能夠精確到 1970 年 1月 1 日之前或之后的 285 616 年。

2.1 獲取當前日期字符串形式

直接調用Date()函數(注意首字母大寫)。返回的是表示當前日期和時間的字符串。傳參數無效,所以不需要傳入參數。

注意:得到的僅僅是個String類型的字符串

<body>
    <script type="text/javascript">
        var date = Date();
        alert(date);
    </script>
</body>
image

2.2 創(chuàng)建日期對象

2.2.1 創(chuàng)建表示當前表示當前日期的對象

new Date()

<body>
    <script type="text/javascript">
        //使用關鍵字new 調用Date()構造函數,創(chuàng)建的對象表示當前日期
        var now = new Date();
        alert(now);  
    </script>
</body>

2.2.2 創(chuàng)建指定字符串日期對象

new Date("字符串格式日期")

支持格式1:英文月 日,年 時:分:秒 例如:May 23, 2016 09:00:00

支持格式2:年-月-日 例如:2016-11-11

支持格式3:年/月/日 例如:2016/11/11

<body>
    <script type="text/javascript">
        var d1 = new Date("May 31, 2016 09:00:00"); 
        console.log(d1);    //Tue May 31 2016 09:00:00 GMT+0800 (中國標準時間)
        var d2 = new Date("2016-11-12");
        console.log(d2);    //Sat Nov 12 2016 08:00:00 GMT+0800 (中國標準時間)
        var d3 = new Date("2016/11/12");
        console.log(d3);    //Sat Nov 12 2016 08:00:00 GMT+0800 (中國標準時間)
    </script>
</body>

2.2.3 創(chuàng)建指定毫秒值的日期對象

new Date(指定的毫秒值)

這個毫秒值是指的從1970年1月1日0:0:0開始算的毫秒值

<body>
    <script type="text/javascript">
        var d1 = new Date(1646464646646);
        console.log(d1);    // Sat Mar 05 2022 15:17:26 GMT+0800 (中國標準時間)
        var d2 = new Date(1000 * 60 * 60 * 72);
        console.log(d2);    //Sun Jan 04 1970 08:00:00 GMT+0800 (中國標準時間)
    </script>
</body>

2.2.4 通過參數傳入年月日時分秒來創(chuàng)建日期對象

newDate(年, 月[, 日, 時, 分, 秒])

注意:

  • 年月必須有,日時分秒可以省略。(1日,0分,0秒)
  • 月份的范圍是0-11. 0表示1月份。
  • 如果設置的月日分秒超過了范圍,則自動進行增減操作。例如:如果一個月只有31天,你如果傳入32,則自動調整為下個月的1號。
<body>
    <script type="text/javascript">
        var d1 = new Date(2016, 11, 31);
        console.log(d1);    //Sat Dec 31 2016 00:00:00 GMT+0800 (中國標準時間)
        var d2 = new Date(2016, 11, 33);
        console.log(d2);    //Mon Jan 02 2017 00:00:00 GMT+0800 (中國標準時間)
    </script>
</body>

三、日期繼承的3個方法

3.1 toString()方法

toString()方法一般返回帶有時區(qū)信息的日期和時間。

備注:我們直接輸出一個日期對象的時候,就相當于調用了toString()方法再輸出

3.2 toLocalString() 方法

toLocalString()返回符合本地習慣的日期和時間格式

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.toLocaleString()); //  2016/11/9 上午11:28:01   注意:不同的瀏覽器有差異
    </script>
</body>

3.3 valueOf()方法

valueOf()方法不返回字符串,而是返回的代表這個時間的毫秒值。

一般用用來比較兩個日期的大小,就知道誰在前誰在后了。

==日期早的小于日期晚的。==

例如:2016年11年11日是小于2016年11月12日的

<body>
    <script type="text/javascript">
        var d1 = new Date("2016-11-20");
        var d2 = new Date("2016-11-22");
        console.log(d1 < d2); //true
        console.log(d1 > d2); //false
        console.log(d1 - d2);  // 間隔的毫秒值:-172800000
    </script>
</body>

四、Date對象的常用方法

4.1 getTime()和setTime(毫秒值)

getTime()返回表示日期的毫秒值,與valueOf()一樣

setTime(毫秒值) 以毫秒數設置日期,會改變整個日期

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getTime());    //1478667185681
        date.setTime(979797979879879);
        console.log(date.toLocaleString());//33018/7/25 下午5:31:19
    </script>
</body>

4.2 getFullYear()和setFullYear(年份)

getFullYear() 取得4位數的年份

setFullYear()設置日期的年份,必須是4為數字的年份,否則將來獲取的年份是不對的。

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getFullYear());    
        date.setFullYear(2018);
        console.log(date.toLocaleString());
    </script>
</body>

4.3 getMonth()和setMonth(月份)

getMonth()取得月份。 范圍:0-11

setMonth(月份) 設置月份

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getMonth());   //如果是11月份則返回 10
        date.setMonth(2);   // 設置月份為3月
        console.log(date.toLocaleString()); 
    </script>
</body>

4.4 getDate()和setDate(日)

getDate() 獲取一個月中的第幾天(1-31)

setDate(日) 設置一個月中的第幾天

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getDate());
        date.setDate(11);
        console.log(date.toLocaleString());
    </script>
</body

4.5 getDay()

getDay() 獲取是星期幾 0代表星期日 6代表星期6

注意:沒有setDay()的方法

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getDay());
    </script>
</body>

4.6 getHours()和setHours(小時)

getHours() 獲取小時數(0-23)

setHours(小時) 設置小時數 如果設置的值超過23則更改月份中的日期,小于0則減少日期數

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getHours());
        date.setHours(10);
        console.log(date.toLocaleString());
    </script>
</body>

4.7 getMinutes() 和setMinutes(分鐘)

getMinutes() 獲取分鐘數(0-59)

setMinutes(分鐘) 設置分鐘數 如果超過60或小于0則自動增加小時

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getMinutes());
        date.setMinutes(62);
        console.log(date.toLocaleString());
    </script>
</body>

4.8 getSeconds()和setSeconds(秒)

getSeconds() 獲取秒數 0-59

setSeconds(秒數) 設置秒數 如果超過60或小于0,則自動增減分鐘數

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getSeconds());
        date.setSeconds(62);
        console.log(date.toLocaleString());
    </script>
</body>

4.9 getMilliSeconds()和setMilliSeconds(毫秒值)

getMilliSeconds() 獲取毫秒值 0-999

setMilliSeconds(毫秒值) 設置毫秒值

<body>
    <script type="text/javascript">
        var date = new Date();
        console.log(date.getMilliseconds());
        date.setMilliseconds(999);
        console.log(date.toLocaleString());
    </script>
</body>

五、 日期格式化方法

  1. toDateString() ——以特定于實現的格式顯示星期幾、月、日和年;
  2. toTimeString() ——以特定于實現的格式顯示時、分、秒和時區(qū);
  3. toLocaleDateString() ——以特定于地區(qū)的格式顯示星期幾、月、日和年;
  4. toLocaleTimeString() ——以特定于實現的格式顯示時、分、秒;
  5. toUTCString() ——以特定于實現的格式完整的 UTC 日期。

是不是感覺東西很多,別著急其實都是有規(guī)律的;不需要死記硬背,找到規(guī)律理解記憶就好了;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 國家電網公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,311評論 6 13
  • 概述 Date對象是JavaScript提供的日期和時間的操作接口。它可以表示的時間范圍是,1970年1月1日00...
    許先生__閱讀 581評論 0 1
  • 抄自http://javascript.ruanyifeng.com/stdlib/date.html概述Date...
    zjh111閱讀 5,289評論 0 2
  • 這是一個長發(fā)的女人,直直頭發(fā)垂到肩旁。圓圓臉,單眼皮,見我注視著她,靦腆一笑,眼神透出簡單與善良。她上著白色潑墨襯...
    曾經是小黑閱讀 283評論 2 1
  • 2018年4月8日 星期天 晴 清明小長假過后的第一個上班日,天氣晴好,微風不燥,今天正好是我輪休。晨...
    蘭奇兒閱讀 328評論 0 0

友情鏈接更多精彩內容