JS引用型別中的Date型別
一, 瞭解Date的使用
- Date型別使用使用UTC(Coordinated Universal Time,國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來儲存日期。
- 要建立一個日期物件,使用new操作符和Date建構函式即可如下:
var now = new Date();
alert(now);//如圖一所示,返回的是中國標準時間
- 在呼叫Date函式而不傳參的情況下,新建立的物件自動獲得當前的日期和時間如果想根據特定的日期和時間建立日期物件,必須傳入表示日期的毫秒數。
圖一:
二,Date型別的方法——返回日期毫秒數
1,為了簡化對於傳入時間具體是多少毫秒的計算過程,ECMAScript提供了兩個方法:Date.parse()和Date.parse(),兩種方法都返回表示時間的毫秒數。
2,兩個方法都接收一個表示日期的毫秒數,然後嘗試根據這個字串返回相應日期的毫秒數,如果傳入的字串不能表示日期,那麼它會返回NaN。
3,其中不同的是Date.UTC()的引數分別是年份,基於0的月份(0-11),天(1到31),小時數(0到23),分鐘,秒以及毫秒數。
4,其實可以直接將表示時間的字串引數傳給Date建構函式,因為Date建構函式會模仿Date.parse()和Data.UTC()這兩個方法,會在後臺呼叫這個兩個方法,將引數轉化成毫秒數,但其中有一點明顯不同的是Date建構函式在模仿Date.UTC()時日期和時間都是基於本地時區而非GMT建立
從下面程式碼中就可以看出輸入同樣的引數輸出的卻不一樣
//Date.parse() var parse = Date.parse(2018,11,3,12,28); alert(parse);//1514764800000 var Time_P = new Date(time); alert(Time_P);//Mon Jan 01 2018 08:00:00 GMT+0800 (中國標準時間) //Date.UTC() var utc = Date.UTC(2018,11,3,12,28); alert(utc);//1543840080000 var Time_U = new Date(time_a); alert(Time_U);//Mon Dec 03 2018 20:28:00 GMT+0800 (中國標準時間) //直接給Date建構函式傳入表示日期的字串 var time = new Date(2018,11,3,12,28); alert(time);//Mon Dec 03 2018 12:28:00 GMT+0800 (中國標準時間) //所以在使用Date建構函式時就不需要使用這兩個方法將引數轉化成毫秒數了,可以直接傳入日期引數
三,日期格式化方法
Date型別有一些專門用於將日期格式化為字串的方法,方法如下:
var date =new Date(1997,11,3,12,55);
- toDateString()——以特定於實現的格式顯示星期幾,月,日,年
var time = date.toDateString();
console.log(time);//Wed Dec 03 1997
- toTimeString()——以特定於實現的格式顯示時,分,秒,時區
var time = date.toTimeString();
console.log(time);//12:55:00 GMT+0800 (中國標準時間)
- toLocaleDateString()——以特定於地區的格式顯示星期幾,月,日,年
var time = date.toLocaleDateString();
console.log(time);//1997/12/3
- toLocalTimeString()——以特定於實現的格式顯示時,分,秒
var time = date.toLocaleTimeString();
console.log(time);//下午12:55:00
- toUTCString()——以特定於是實現的格式完整的UTC日期
var time = date.toUTCString();
console.log(time);//Wed, 03 Dec 1997 04:55:00 GMT
四,日期/時間元件方法
1,getTime() : 返回表示日期的毫秒數;與valueOf()方法返回的值相同
2,setTime(毫秒): 以毫秒數設定日期,會改變整個日期
3,getFullYear(): 取得4位數的年份(如2007而非僅07)
4,getUTCFullYear() 返回UTC日期的4位數年份
5,setFullYear(年):設定日期的年份。傳入的年份值必須是4位數字(如2007而非僅07)
6,setUTCFullYear(年): 設定UTC日期的年份。傳入的年份值必須是4位數字(如2007而非僅07)
7,getMonth(): 返回日期中的月份,其中0表示一月,11表示十二月
8,getUTCMonth(): 返回UTC日期中的月份,其中0表示一月,11表示十二月
9,setMonth(月): 設定日期的月份。傳入的月份值必須大於0,超過11則增加年份
10,setUTCMonth(月): 設定UTC日期的月份。傳入的月份值必須大於0,超過11則增加年份
11,getDate(): 返回日期月份中的天數(1到31)
12,getUTCDate(): 返回UTC日期月份中的天數(1到31)
13,setDate(日): 設定日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份
14,setUTCDate(日): 設定UTC日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份
15,getDay(): 返回日期中星期的星期幾(其中0表示星期日,6表示星期六)
16,getUTCDay(): 返回UTC日期中星期的星期幾(其中0表示星期日,6表示星期六)
17, getHours(): 返回日期中的小時數(0到23)
18,getUTCHours(): 返回UTC日期中的小時數(0到23)
19,setHours(時): 設定日期中的小時數。傳入的值超過了23則增加月份中的天數
20,setUTCHours(時): 設定UTC日期中的小時數。傳入的值超過了23則增加月份中的天數
21,getMinutes(): 返回日期中的分鐘數(0到59)
22,getUTCMinutes(): 返回UTC日期中的分鐘數(0到59)
22,setMinutes(分): 設定日期中的分鐘數。傳入的值超過59則增加小時數
23,setUTCMinutes(分): 設定UTC日期中的分鐘數。傳入的值超過59則增加小時數
24,getSeconds(): 返回日期中的秒數(0到59)
25,getUTCSeconds() 返回UTC日期中的秒數(0到59)
26,setSeconds(秒): 設定日期中的秒數。傳入的值超過了59會增加分鐘數
27,setUTCSeconds(秒): 設定UTC日期中的秒數。傳入的值超過了59會增加分鐘數
28,getMilliseconds() 返回日期中的毫秒數
29,getUTCMilliseconds(): 返回UTC日期中的毫秒數
30,setMilliseconds(毫秒): 設定日期中的毫秒數
31,setUTCMilliseconds(毫秒): 設定UTC日期中的毫秒數
32,getTimezoneOffset(): 返回本地時間與UTC時間相差的分鐘數。例如,美國東部標準時間返回300。在某地進入夏令時的情況下,這個值會有所變化