js引用類型3:Date類型

3.Date類型

3.1創建一個Date對象

let now = new Date();

在調用Date 構造函數而不傳遞參數的情況下,新創建的對象自動獲得當前日期和時間。如果想根據特定的日期和時間創建日期對象,必須傳入表示該日期的毫秒數(即從UTC 時間1970 年1 月1 日午夜起至該日期止經過的毫秒數)

let date1 = new Date("May 25, 2004");//英文格式
let date2 = new Date(2005, 4, 5, 17, 55, 55); //年月日時分秒順序傳入(月份加一,注意一下此處)

后臺自動調用Date.parse()和Date.UTC()方法

ECMAScript 5 添加了Data.now()方法,返回表示調用這個方法時的日期和時間的毫秒數。這個方法簡化了使用Data 對象分析代碼的工作。

let start = Date.now();
//調用函數
doSomething();
//取得停止時間
let stop = Date.now(),
result = stop – start;

支持Data.now()方法的瀏覽器包括IE9+、Firefox 3+、Safari 3+、Opera 10.5 和Chrome。在不支持它的瀏覽器中,使用+操作符把Data 對象轉換成字符串,也可以達到同樣的目的。

3.2繼承方法

關于toLocaleString()和toString()不想再做太多贅述,這兩個方法在不同的瀏覽器中返回的日期和時間格式可謂大相徑庭。事實上,toLocaleString()和toString()的這一差別僅在調試代碼時比較有用,而在顯示日期和時間時沒有什么價值。
至于Date 類型的valueOf()方法,則根本不返回字符串,而是返回日期的毫秒表示。因此,可以方便使用比較操作符(小于或大于)來比較日期值。

let date1 = new Date(2007, 0, 1); //"January 1, 2007"
let date2 = new Date(2007, 1, 1); //"February 1, 2007"
alert(date1 < date2); //true
alert(date1 > date2); //false

從邏輯上講,2007 年1 月1 日要早于2007 年2 月1 日,此時如果我們說前者小于后者比較符合常理。而表示2007 年1 月1 日的毫秒值小于表示2007 年2 月1 日的毫秒值,因此在首先使用小于操作符比較日期時,返回的結果是true。這樣,就為我們比較日期提供了極大方便。

3.3日期格式化方法
Date 類型還有一些專門用于將日期格式化為字符串的方法,這些方法如下。

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

與toLocaleString()和toString()方法一樣,以上這些字符串格式方法的輸出也是因瀏覽器而異的,因此沒有哪一個方法能夠用來在用戶界面中顯示一致的日期信息。

除了前面介紹的方法之外,還有一個名叫toGMTString()的方法,這是一個與
toUTCString()等價的方法,其存在目的在于確保向后兼容。不過,ECMAScript 推薦現在編寫的代碼一律使用toUTCString()方法。

3.4日期/時間組件方法

到目前為止,剩下還未介紹的Date 類型的方法(如下表所示),都是直接取得和設置日期值中特定部分的方法了。需要注意的是,UTC 日期指的是在沒有時區偏差的情況下(將日期轉換為GMT 時間)的日期值。

方法 說明
getTime() 返回表示日期的毫秒數;與valueOf()方法返回的值相同
setTime(毫秒) 以毫秒數設置日期,會改變整個日期
getFullYear() 取得4位數的年份(如2007而非僅07)
getUTCFullYear() 返回UTC日期的4位數年份
setFullYear(年) 設置日期的年份。傳入的年份值必須是4位數字(如2007而非僅07)
setUTCFullYear(年) 設置UTC日期的年份。傳入的年份值必須是4位數字(如2007而非僅07)
getMonth() 返回日期中的月份,其中0表示一月,11表示十二月
getUTCMonth() 返回UTC日期中的月份,其中0表示一月,11表示十二月
setMonth(月) 設置日期的月份。傳入的月份值必須大于0,超過11則增加年份
setUTCMonth(月) 設置UTC日期的月份。傳入的月份值必須大于0,超過11則增加年份
getDate() 返回日期月份中的天數(1到31)
getUTCDate() 返回UTC日期月份中的天數(1到31)
setDate(日) 設置日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份
setUTCDate(日) 設置UTC日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份
getDay() 返回日期中星期的星期幾(其中0表示星期日,6表示星期六)
getUTCDay() 返回UTC日期中星期的星期幾(其中0表示星期日,6表示星期六)
getHours() 返回日期中的小時數(0到23)
getUTCHours() 返回UTC日期中的小時數(0到23)
setHours(時) 設置日期中的小時數。傳入的值超過了23則增加月份中的天數
setUTCHours(時) 設置UTC日期中的小時數。傳入的值超過了23則增加月份中的天數
getMinutes() 返回日期中的分鐘數(0到59)
getUTCMinutes() 返回UTC日期中的分鐘數(0到59)
setMinutes(分) 設置日期中的分鐘數。傳入的值超過59則增加小時數
setUTCMinutes(分) 設置UTC日期中的分鐘數。傳入的值超過59則增加小時數
getSeconds() 返回日期中的秒數(0到59)
getUTCSeconds() 返回UTC日期中的秒數(0到59)
setSeconds(秒) 設置日期中的秒數。傳入的值超過了59會增加分鐘數
setUTCSeconds(秒) 設置UTC日期中的秒數。傳入的值超過了59會增加分鐘數
getMilliseconds() 返回日期中的毫秒數
getUTCMilliseconds() 返回UTC日期中的毫秒數
setMilliseconds(毫秒) 設置日期中的毫秒數
setUTCMilliseconds(毫秒) 設置UTC日期中的毫秒數
getTimezoneOffset() 返回本地時間與UTC時間相差的分鐘數。例如,美國東部標準時間返回300。在某地進入夏令時的情況下,這個值會有所變化
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Date.parse()、Date.UTC()、Date.now() Date.parse()方法接收一個表示日期...
    shanruopeng閱讀 266評論 0 1
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,268評論 0 4
  • 三、Date類型 Date類型使用自UTC(國際協調時間)1970年1月1日午夜(零時)開始經過的毫秒數來保存日期...
    yjaal閱讀 275評論 0 0
  • 終于要走了嗎?躺在病床上的慕容在腦海深處想到,待會我會見到誰呢?黑白還是死神?我會從身體中出來嗎?腦袋好沉重,要睡...
    小司機一閱讀 299評論 0 0
  • 寶貝們,今天是11月1號,很平常的星期三,可是今天又是特別的一天,因為今天我們云朵班大家庭會迎來兩個可愛的寶...
    小確幸_23b9閱讀 1,107評論 0 1