Date 對象屬性和方法


Date 對象

 

在 JavaScript 中, Date 對象用於處理日期和時間。
它提供了獲取、設置日期時間等相關操作。
創建一個 Date 對象的方法:

  • var date = new Date()

 

Date 對象與其實例的屬性和方法:

// Object.getOwnPropertyDescriptors(Date):
name                        : {value: "Date", writable: false, enumerable: false, configurable: true}
length                      : {value: 7, writable: false, enumerable: false, configurable: true}
prototype                   : {value: {…}, writable: false, enumerable: false, configurable: false}
UTC                         : {writable: true, enumerable: false, configurable: true, value: ƒ}
now                         : {writable: true, enumerable: false, configurable: true, value: ƒ}
parse                       : {writable: true, enumerable: false, configurable: true, value: ƒ}

// Object.getOwnPropertyDescriptors(Date.prototype):
constructor                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
toString                    : {writable: true, enumerable: false, configurable: true, value: ƒ}
toLocaleString              : {writable: true, enumerable: false, configurable: true, value: ƒ}
valueOf                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
Symbol(Symbol.toPrimitive)  : {writable: false, enumerable: false, configurable: true, value: ƒ}
getDate                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
getDay                      : {writable: true, enumerable: false, configurable: true, value: ƒ}
getFullYear                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
getHours                    : {writable: true, enumerable: false, configurable: true, value: ƒ}
getMilliseconds             : {writable: true, enumerable: false, configurable: true, value: ƒ}
getMinutes                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
getMonth                    : {writable: true, enumerable: false, configurable: true, value: ƒ}
getSeconds                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
getTime                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
getTimezoneOffset           : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCDate                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCDay                   : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCFullYear              : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCHours                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCMilliseconds          : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCMinutes               : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCMonth                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
getUTCSeconds               : {writable: true, enumerable: false, configurable: true, value: ƒ}
getYear                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
setDate                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
setFullYear                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
setHours                    : {writable: true, enumerable: false, configurable: true, value: ƒ}
setMilliseconds             : {writable: true, enumerable: false, configurable: true, value: ƒ}
setMinutes                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
setMonth                    : {writable: true, enumerable: false, configurable: true, value: ƒ}
setSeconds                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
setTime                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCDate                  : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCFullYear              : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCHours                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCMilliseconds          : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCMinutes               : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCMonth                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
setUTCSeconds               : {writable: true, enumerable: false, configurable: true, value: ƒ}
setYear                     : {writable: true, enumerable: false, configurable: true, value: ƒ}
toDateString                : {writable: true, enumerable: false, configurable: true, value: ƒ}
toGMTString                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
toISOString                 : {writable: true, enumerable: false, configurable: true, value: ƒ}
toJSON                      : {writable: true, enumerable: false, configurable: true, value: ƒ}
toLocaleDateString          : {writable: true, enumerable: false, configurable: true, value: ƒ}
toLocaleTimeString          : {writable: true, enumerable: false, configurable: true, value: ƒ}
toTimeString                : {writable: true, enumerable: false, configurable: true, value: ƒ}
toUTCString                 : {writable: true, enumerable: false, configurable: true, value: ƒ}

 

 

Date 對象方法描述

方法 描述
Date.parse( ) 解析並返回日期和時間的字符串表示的內部毫秒表示日期。
Date.UTC( ) 返回指定的毫秒表示UTC日期和時間。

 

 

 

Date.prototype 對象方法描述

方法 描述
Date() 返回今天的日期及時間。
getDate() 按照本地模式返回指定日期是哪日。
getDay() 按照本地模式返回指定日期是周幾。
getFullYear() 按照本地模式返回指定日期是哪一年。
getMilliseconds() 按照本地模式返回指定日期是幾毫秒。
getMinutes() 按照本地模式返回指定日期是幾分。
getMonth() 按照本地模式返回指定日期的月份。
getSeconds() 按照本地模式返回指定日期是幾秒。
getTime() 按照本地模式當前的格林威治時間。
getTimezoneOffset() 以分鍾為單位返回時間偏差。
getUTCDate() 按照世界統一時間返回指定日期是幾號。
getUTCDay() 按照世界統一時間返回指定日期是周幾。
getUTCFullYear() 按照世界統一時間返回指定日的年份。
getUTCHours() 按照世界統一時間返回指定日期是幾時。
getUTCMilliseconds() 按照世界統一時間返回指定日期的毫秒數。
getUTCMinutes() 按照世界統一時間返回指定日期的分鍾數。
getUTCMonth() 按照世界統一時間返回指定日期的月份。
getUTCSeconds() 按照世界統一時間返回指定日期的秒數。
setDate() 按照本地模式設置日期。
setFullYear() 按照本地模式設置年份。
setHours() 按照本地模式設置小時。
setMilliseconds() 按照本地模式設置毫秒數。
setMinutes() 按照本地模式設置分鍾數。
setMonth() 按照本地模式設置月份。
setSeconds() 按照本地模式設置秒數。
setTime() 按照格林威治格式設置毫秒數。
setUTCDate() 按照世界統一時間設置日期。
setUTCFullYear() 按照世界統一時間設置年份。
setUTCHours() 按照世界統一時間設置小時數。
setUTCMilliseconds() 按照世界統一時間設置毫秒數。
setUTCMinutes() 按照世界統一時間設置分鍾數。
setUTCMonth() 按照世界統一時間設置月份。
setUTCSeconds() 按照世界統一時間設置秒數。
toDateString() 返回日期的字符串。
toLocaleDateString() 按照本地模式,返回日期的字符串。
toLocaleFormat() 使用格式字符串,將日期轉換為一個字符串。
toLocaleString() 使用當前語言環境的約定將日期轉換為一個字符串。
toLocaleTimeString() 返回日期的“時間”部分作為一個字符串,使用當前語言環境的約定。
toSource() 返回一個字符串代表一個等價的日期對象的來源,您可以使用這個值來創建一個新的對象。
toString() 返回一個字符串代表指定的日期對象。
toTimeString() 返回日期的“時間”部分以字符串形式。
toUTCString() 使用通用時間約定,將日期轉換為一個字符串。
valueOf() 返回日期對象的原始值。

 

Date對象:封裝一個時間點,提供操作時間的API。Date對象中封裝的是從1970年1月1日0點至今的毫秒數。

創建Date對象的4種方式:

new Date(); // 創建當前時刻的日期與時間

new Date(value); // value:一個 Unix 時間戳(Unix Time Stamp),它是一個整數值,表示自1970年1月1日00:00:00 UTC(the Unix epoch)以來的毫秒數,忽略了閏秒。請注意大多數 Unix 時間戳功能僅精確到最接近的秒。

new Date(dateString); // dateString:表示日期的字符串值。該字符串應該能被 Date.parse() 正確方法識別(即符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)。

new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]); 
// year
// 表示年份的整數值。 0到99會被映射至1900年至1999年,其它值代表實際年份。
// monthIndex
// 表示月份的整數值,從 0(1月)到 11(12月)!!!。
// day 可選
// 表示一個月中的第幾天的整數值,從1開始。默認值為1。
// hours 可選
// 表示一天中的小時數的整數值 (24小時制)。默認值為0(午夜)。
// minutes 可選
// 表示一個完整時間(如 01:10:00)中的分鍾部分的整數值。默認值為0。
// seconds 可選
// 表示一個完整時間(如 01:10:00)中的秒部分的整數值。默認值為0。
// milliseconds 可選
// 表示一個完整時間的毫秒部分的整數值。默認值為0。

 

日期分量:FullYear、Month、Date、Day、Hours、Minutes、Seconds、Milliseconds。
每一個日期分量都有一個getset方法(除了Day沒有set方法),分別用於獲取和設置時間對象。

日期的單位及范圍:

年FullYear (無范圍)
月Month (0~11, 0開始,沒有12)
日Date (1~31, 和現實生活一樣)
星期Day (0~6, 0是星期日,沒有7)
時Hours (0~23. 0開始,沒有24)
分Minutes (0~59)
秒Seconds (0~59)
毫秒MilliSeconds

 

Date 常用方法示例

var oDate = new Date();
console.log('當前:',oDate.toLocaleString())

var getTime = oDate.getTime();          //格林威治時間
var y = oDate.getFullYear();            // 年份
var mon = oDate.getMonth()+1;           //月份
var d = oDate.getDate();                //日期
var dw = oDate.getDay();                //星期幾
var h = oDate.getHours();               //
var m = oDate.getMinutes();             //
var s = oDate.getSeconds();             //
var ms = oDate.getMilliseconds();       //毫秒

console.log('格林威治時間:',getTime)
console.log('年份:',y)
console.log('月份:',mon)
console.log('日期:',d)
console.log('星期:',dw)
console.log('時:',h)
console.log('分:',m)
console.log('秒:',s)
console.log('毫秒:',ms)
    

 

偶爾會用到的小方法:

// 不夠兩位數的補全,
function setTen (num) {
    // 注意確保num是正整數再使用,例子中非正整數一律原樣返回,請根據業務實際情況進行更謹慎判斷
    return num >= 0 && num < 10? '0'+ parseInt(num): num
    
}

// 傳入星期幾返回對應中文
function setDay (day) {
    // 注意day為0-6的數字!!!此處舉例未對day判斷
    var week = ['日', '一', '二', '三', '四', '五', '六'];
    return week[day]
}

var oDate = new Date();

var   mon = setTen(oDate.getMonth()+1);   //月份
var     d = setTen(oDate.getDate());      //日期
var     w = setDay(oDate.getDay());       //星期幾
var     h = setTen(oDate.getHours());     //
var     m = setTen(oDate.getMinutes());   //
var     s = setTen(oDate.getSeconds());   //

console.log('月份:',mon)
console.log('日期:',d)
console.log('星期:',w)
console.log('時:',h)
console.log('分:',m)
console.log('秒:',s)

 

獲得指定日期之前或之后的某個時間點 ( Fri Jan DD YYYY hh:mm:ss GMT+0800 (中國標准時間) )

  //  獲得指定日期之前或之后的某個時間
  function getAfterDate(d,i,type) {
    var t = new Date(d)
    ////////////////////////////////////////////////////////////////////
    //    d (用於增減的日期)  合法參數:任何能被 new Date() 轉化的日期 
    //    i (增減數量)       合法參數:正負整數 與 0                              
    // type (日期類型)       合法參數:
    //     年 : year、y、年
    //     月 : month、mon、月
    //     周 : week、w、周
    //     日 : day、d、天、日
    //     時 : hours、h、時、小時
    //     分 : minutes、m、分、分鍾
    //     秒 : seconds、s、秒、秒鍾
    //   毫秒 : milliseconds、ms、毫秒
    /////////////////////////////////////////////////////////////////////
    if (type == 'year' || type == 'y' || type == '年') {return new Date(t.setFullYear(t.getFullYear() + i))}
    if (type == 'month' || type == 'mon' || type == '月') {return new Date(t.setMonth(t.getMonth() + i))}
    if (type == 'week' || type == 'w' || type == '周') {return new Date(t.setDate(t.getDate() + i*7))}
    if (type == 'day' || type == 'd' || type == '天'|| type == '日') {return new Date(t.setDate(t.getDate() + i))}
    if (type == 'hours' || type == 'h' || type == '時') {return new Date(t.setHours(t.getHours() + i))}
    if (type == 'minutes' || type == 'm' || type == '分' || type == '分鍾') {return new Date(t.setMinutes(t.getMinutes() + i))}
    if (type == 'seconds' || type == 's' || type == '秒' || type == '秒鍾') {return new Date(t.setSeconds(t.getSeconds() + i))}
    if (type == 'milliseconds' || type == 'ms' || type == '毫秒') {return new Date(t.setMilliseconds(t.getMilliseconds() + i))}

    return '參數有誤'
  }

  console.log('now: ',new Date()) //  當前時間
  console.log('y ',getAfterDate(new Date(),3,'年')) // 三年后
  console.log('m ',getAfterDate(new Date(),3,'月')) // 三個月后
  console.log('w ',getAfterDate(new Date(),3,'周')) // 三周后
  console.log('d ',getAfterDate(new Date(),-3,'天')) // 三天前
  console.log('h ',getAfterDate(new Date(),-1,'時')) // 一小時前
  console.log('s ',getAfterDate(new Date(),-30,'分')) // 三十分鍾前
  console.log('m ',getAfterDate(new Date(),300,'秒')) // 三百秒鍾后
  console.log('ms ',getAfterDate(new Date(),3000,'ms')) // 三千毫秒后

 

獲得指定日期之前或之后的某個時間點的本地時間格式 ( YYYY/MM/DD 上午 hh:mm:ss )

  // 獲得指定日期之前或之后的某個時間點的本地時間格式,各參數可先判空判值之類優化
  function getAfterLocalDate(d,i,type) {

    ////////////////////////////////////////////////////////////////////
    //    d (用於增減的日期)  合法參數:任何能被 new Date() 轉化的日期 
    //    i (增減數量)       合法參數:正負整數 與 0                              
    // type (日期類型)       合法參數:
    //     年 : year、y、年
    //     月 : month、mon、月
    //     周 : week、w、周
    //     日 : day、d、天、日
    //     時 : hours、h、時、小時
    //     分 : minutes、m、分、分鍾
    //     秒 : seconds、s、秒、秒鍾
    //   毫秒 : milliseconds、ms、毫秒
    /////////////////////////////////////////////////////////////////////
    var t = new Date(d)
    var yObj  = {a:['year','y','年'],s:'setFullYear',g:'getFullYear'}
    var monObj= {a:['month','mon','月'],s:'setMonth',g:'getMonth'}
    var wObj  = {a:['week','w','周'],s:'setDate',g:'getDate'}
    var dObj  = {a:['day','d','天','日'],s:'setDate',g:'getDate'}
    var hObj  = {a:['hours','h','時'],s:'setHours',g:'getHours'}
    var mObj  = {a:['minutes','m','分','分鍾'],s:'setMinutes',g:'getMinutes'}
    var sObj  = {a:['seconds','s','秒','秒鍾'],s:'setSeconds',g:'getSeconds'}
    var msObj = {a:['milliseconds','ms','毫秒'],s:'setMilliseconds',g:'getMilliseconds'}
    var nt = null
    var o = [yObj,monObj,wObj,dObj,hObj,mObj,sObj,msObj]

    o.forEach(function (v) {
      if ( v.a.indexOf(type) > 0) {
        nt = new Date(t[v.s](t[v.g]() + i))
      }
    })

    return nt.toLocaleString()

  }

  // 使用與上面示例相同
  console.log('y ',getAfterLocalDate(new Date(),3,'年'))
  console.log('mon ',getAfterLocalDate(new Date(),3,'月'))
  console.log('w ',getAfterLocalDate(new Date(),3,'周'))
  console.log('d ',getAfterLocalDate(new Date(),-3,'日'))
  console.log('h ',getAfterLocalDate(new Date(),-1,'時'))
  console.log('s ',getAfterLocalDate(new Date(),-30,'分'))
  console.log('m ',getAfterLocalDate(new Date(),300,'秒'))
  console.log('ms ',getAfterLocalDate(new Date(),3000,'ms'))

 

自定義一個實例方法:

  // 給Date的實例定義一個方法
  Date.prototype.isExpired = function (d,i,type) {
    if (d === undefined || i === undefined || type === undefined ) {
      return '參數有誤'
    }
    ////////////////////////////////////////////////////////////////////
    //    d (用於增減的日期)  合法參數:任何能被 new Date() 轉化的日期 
    //    i (增減數量)       合法參數:正負整數 與 0                              
    // type (日期類型)       合法參數:
    //     年 : year、y、年
    //     月 : month、mon、月
    //     周 : week、w、周
    //     日 : day、d、天、日
    //     時 : hours、h、時、小時
    //     分 : minutes、m、分、分鍾
    //     秒 : seconds、s、秒、秒鍾
    //   毫秒 : milliseconds、ms、毫秒
    /////////////////////////////////////////////////////////////////////
    
    var t = new Date(d) 
    var yObj  = {a:['year','y','年'],s:'setFullYear',g:'getFullYear'}
    var monObj  = {a:['month','mon','月'],s:'setMonth',g:'getMonth'}
    var wObj  = {a:['week','w','周'],s:'setDate',g:'getDate'}
    var dObj  = {a:['day','d','天','日'],s:'setDate',g:'getDate'}
    var hObj  = {a:['hours','h','時'],s:'setHours',g:'getHours'}
    var mObj  = {a:['minutes','m','分','分鍾'],s:'setMinutes',g:'getMinutes'}
    var sObj  = {a:['seconds','s','秒','秒鍾'],s:'setSeconds',g:'getSeconds'}
    var msObj = {a:['milliseconds','ms','毫秒'],s:'setMilliseconds',g:'getFullYear'}
    var nt = null // 存儲 t 增減后的時間點
    var o = [yObj,monObj,wObj,dObj,hObj,monObj,sObj,msObj]

    o.forEach(function (v) {
      if ( v.a.indexOf(type) > 0 ) {
        nt = new Date(t[v.s](t[v.g]() + i)) // 獲取相應時間點進行增減
      }
    })

    // 缺陷:參數d 和 this 都是 new Date() 時,對比只有極小幾率相等,因為方法由調用到運行之間有時間差,有可能耗費了幾毫秒或以上
    return nt < this //  參數 d 時間點增減后 與 this 時間點對比
  }

  var now = new Date()
  var oDate = new Date('2020/1/1 11:11:11')

  console.log('2020/1/1 11:11:11 的三年后早於當前時間嗎? ',now.isExpired(oDate,3,'年'))
  console.log('2020/1/1 11:11:11 的九個月后早於當前時間嗎?',now.isExpired(oDate,9,'月'))
  console.log('現在的三周后早於 2020/1/1 11:11:11 嗎? ',oDate.isExpired(now,3,'周'))
  console.log('2020/1/1 11:11:11 的三天前早於當前時間嗎? ',now.isExpired(new Date(),-3,'日'))
  console.log('現在的一個小時前早於 2020/1/1 11:11:11 嗎? ',oDate.isExpired(now,-1,'時'))
  console.log('2020/1/1 11:11:11 的三十分鍾前早於 2020/1/1 11:11:11 嗎? ',oDate.isExpired(oDate,-30,'分'))
  console.log('現在的三百秒后早於 2020/1/1 11:11:11 嗎? ',oDate.isExpired(new Date(),300,'秒'))
  console.log('現在的三千毫秒前早於 2020/1/1 11:11:11 嗎?',oDate.isExpired(new Date(),-3000,'ms'))

 

 

 

JavaScript 中的三大對象 (本地對象、內置對象、 宿主對象)

本地對象

 

內置對象

 

宿主對象

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM