劍指前端(前端入門筆記)——Date類型

来源:https://www.cnblogs.com/AI-fisher/archive/2019/04/25/10770791.html
-Advertisement-
Play Games

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


Date類型   ECMAScript中的Date類型是在早期Java中的java.util.Date類基礎上構建的。為此,Date類型使用自UTC(國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來保存日期。在使用這種數據存儲格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或之後的100 000 000 年。   創建 要創建一個日期對象,使用new操作符和Date構造函數即可,也就是:
  • 預設參數
1 var now = new Date(); 
2 console.log(now);

火狐的結果:

谷歌的結果:
  • 傳入一個字元參數
 1 var d1 = new Date("2018.08.08 20:08:08");
 2 var d2 = new Date("2018.08.08");
 3 var d3 = new Date("2018,08,08");
 4 var d4 = new Date("2018-08-08");
 5 var d5 = new Date("2018/08/08");
 6 var d6 = new Date("2018/13/08");      //看總結
 7 
 8 console.log(d1);    
 9 console.log(d2);
10 console.log(d3);
11 console.log(d4);
12 console.log(d5);
13 console.log(d6);

火狐的結果:

谷歌的結果:
  • 傳入多個數值參數
1 var d1 = new Date(2008,7,8,20,8,8);
2 var d2 = new Date(2008,12,8,20,8,8);
3 var d3 = new Date(2008,7,8);
4 var d4 = new Date(2008,7,355);       //看總結
5 console.log(d1);
6 console.log(d2);
7 console.log(d3);
8 console.log(d4);

火狐的結果:

谷歌的結果:

 

結合上面的這些例子,我們可得到以下幾點: 1.每個瀏覽器支持的日期格式不同,顯示日期的格式也不同。 2.傳入一個字元參數的時候,最後一個月份寫成十三月,程式會報錯,這個符合常理 3.傳入的是多個數值參數的時候,不再按常識來顯示,而是有一套自己的規則,那就是月份和日期的取值從0開始,1月用0來表示,後面的依次提前一個位置,也就是12月為11,這個雖不符合常識,但很符合電腦的原理,之後會在獲取日期的get系列中用實例來演示。 4.最後一個有點類似於之前傳入一個字元參數的實例中,那個超出範圍的例子,但在這裡是行得通的,也就是寫了超過範圍的數值,會發生進位,比如:我寫了13月,會進位到下一年的2月份。 5.火狐中日期在取值範圍方面和月份有同樣的規則,但谷歌沒有。     Date類型的方法很多,下麵列出一些常用的方法   獲取(get系列)    
 1  var d = new Date();
 2 
 3 //  從日期對象獲取信息
 4     console.log(d.getFullYear());    //獲取年
 5     console.log(d.getMonth());       //獲取月,註意月份是從0開始
 6     console.log(d.getDate());        //獲取日
 7     console.log(d.getDay());         //獲取周
 8 
 9     console.log(d.getHours());       //獲取小時
10     console.log(d.getMinutes());     //獲取分鐘
11     console.log(d.getSeconds());     //獲取秒數
12     console.log(d.getMilliseconds());//獲取毫秒
13 
14 //  時間戳
15     console.log(d.getTime());        //獲取從1970年1月1日至今的毫秒
16     console.log(d);                   //返回本地時間,包含年月日星期時分秒

 

設置 除了獲取日期,我們也可以設置日期,有兩種方式: 1.簡易模式,簡單粗暴,但是會清零時分秒
1 var d = new Date("2008/8/8");
2 console.log(d);

 

2.複雜模式,每個部分都設置一遍
 1 var d = new Date();
 2 d.setFullYear(2009);    //設置年
 3 d.setMonth(6);          //設置月,超過11,累加年
 4 d.setDate(27);          //設置日,超過最大日期,累加月
 5 d.setHours(40);         //設置小時,超過24,累加天
 6 d.setMinutes(40);       //設置分鐘,超過60,累加小時
 7 d.setSeconds(40);       //設置秒,超過60,累加分鐘
 8 d.setMilliseconds(40);  //設置毫秒,超過1000,累加秒
 9 d.setTime(10000);        //設置從1970年1月1日過去了多少毫秒
10 
11 console.log(d);          //返回更改後的年月日 時分秒
12 
13 // set系列不像get系列需要拿返回值,但是本身也有返回值
14 // 返回值是從1970年1月1號 0:0:0到當前設置的日期的毫秒數
15 console.log(d.getMilliseconds());
16 
17 var t1 = d.setDate(31);
18 var t2 = d.setHours(8);
19 console.log(t1);
20 console.log(t2);

 

格式化 Date類型還有一些專門用於將日期格式化為字元串的方法,這些方法如下:
 1 var d = new Date();
 2 var d1 = d.toDateString();              //以特定於實現的格式顯示星期幾、月、日和年
 3 var d2 = d.toTimeString();              //以特定於實現的格式顯示時、分、秒和時區
 4 var d3 = d.toLocaleDateString();        //以特定於地區的格式顯示星期幾、月、日和年
 5 var d4 = d.toLocaleTimeString();        //以特定於實現的格式顯示時、分、秒
 6 var d5 = d.toLocaleTimeString();        //以特定於實現的格式顯示完整的UTC日期
 7 
 8 console.log(d);
 9 console.log(d1);
10 console.log(d2);
11 console.log(d3);
12 console.log(d4);
13 console.log(d5);