【JS基礎(chǔ)】(七)JavaScript引用類型之Date對象的常用方法

Date 類型使用自 UTCCoordinated Universal Time,國際協(xié)調(diào)時間)1970 年 1 月 1 日午夜(零時)開始經(jīng)過的毫秒數(shù)來保存日期。

1. 創(chuàng)建Date對象,使用 new 操作符和 Date 構(gòu)造函數(shù)即可:

(1)Date 對象自動使用當(dāng)前的日期和時間作為其初始值

var date = new Date();

(2)將給定的毫秒數(shù)轉(zhuǎn)換為使用的時間,new Date(dateVal)

  • dateVal 必選項。
  • 如果是數(shù)字值,dateVal表示指定日期與1970年1月1日午夜間全球標(biāo)準(zhǔn)時間的毫秒數(shù)。
  • 如果是字符串,則 dateVal 按照 parse 方法中的規(guī)則進行解析。
var date = new Date("2018/04/06 03:23:55");
var date = new Date(1545548361287);

(3)指定具體的日期,new Date((year,month,date[,hours[,minutes[,seconds[,ms]]]]))

  • year 必選項,完整的年份,比如,1976(而不是 76
  • month 必選項,表示的月份,是011 之間的整數(shù)1 月至 12 月)
  • date 必選項,表示日期,是從 131 之間的整數(shù)
  • hours 可選項,如果提供了 minutes 則必須給出。表示小時,是從 023 的整數(shù)
  • minutes 可選項,如果提供了 seconds 則必須給出。表示分鐘,是從 059 的整數(shù)
  • seconds 可選項,如果提供了 milliseconds 則必須給出。表示秒鐘,是從 059 的整數(shù)
  • ms 可選項,表示毫秒,是從 0999 的整數(shù)
var date = new Date(2018, 11, 23, 15, 3, 23);

2. 日期的運算

類型自動轉(zhuǎn)換時,Date實例如果轉(zhuǎn)為數(shù)值,則等于對應(yīng)的毫秒數(shù);如果轉(zhuǎn)為字符串,則等于對應(yīng)的日期字符串。

  • 兩個日期實例對象進行減法運算時,返回的是它們間隔的毫秒數(shù);
  • 進行加法運算時,返回的是兩個字符串連接而成的新字符串。
var d1 = new Date(2018, 0, 1);
var d2 = new Date(2018, 11, 1);

console.log(d2 - d1); //28857600000
console.log(d2 + d1); 
// "Sat Dec 01 2018 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間)Mon Jan 01 2018 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間)"

3. 靜態(tài)方法:Date.now()

Date.now()方法返回當(dāng)前時間距離時間零點(19701100:00:00 UTC)的毫秒數(shù),相當(dāng)于 Unix 時間戳乘以1000。

Date.now(); // 1545549988630

4. 繼承的方法

(1)valueOf()方法返回實例對象距離時間零點(19701100:00:00 UTC)對應(yīng)的毫秒數(shù),該方法等同于getTime方法。

var d = new Date();

d.valueOf() // 1545550458280
d.getTime() // 1545550458280

(2)toString()方法返回一個完整的日期字符串。因為toString是默認(rèn)的調(diào)用方法,所以如果直接讀取Date實例,就相當(dāng)于調(diào)用這個方法。

var d = new Date(2018, 11, 23);

console.log(d.toString()); // Sun Dec 23 2018 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間)
console.log(d); // Sun Dec 23 2018 00:00:00 GMT+0800 (中國標(biāo)準(zhǔn)時間)

(3)toLocaleString()返回一個表示該日期對象的字符串,該字符串與系統(tǒng)設(shè)置的地區(qū)關(guān)聯(lián)。

var d = new Date(2018, 11, 23);

console.log(d.toLocaleString()); // 2018/12/23 上午12:00:00

5. get 類方法

Date對象提供了一系列get*方法,用來獲取實例對象某個方面的值。

實例的方法名 作用
getTime() 返回實例距離1970年1月1日00:00:00的毫秒數(shù),等同于valueOf方法
getYear() 返回距離1900的年數(shù)
getFullYear() 返回四位的年份
getMonth() 返回月份(0 ~ 11,0表示1月,11表示12月)
getDay() 返回星期幾,星期日為0,星期一為1,以此類推
getDate() 返回實例對象對應(yīng)每個月的幾號(從1開始)
getHours() 返回小時數(shù) (0 ~ 23)
getMinutes() 返回分鐘數(shù) (0 ~ 59)
getSeconds() 返回秒數(shù) (0 ~ 59)
getMilliseconds() 返回毫秒數(shù) (0 ~ 999)

6. set 類方法

Date對象提供了一系列set*方法,用來設(shè)置實例對象的各個方面。

實例的方法名 作用
setTime(milliseconds) 設(shè)置毫秒時間戳
setYear(year) 設(shè)置距離1900年的年數(shù)
setFullYear(year [, month, date]) 設(shè)置四位年份
setMonth(month [, date]) 設(shè)置月份(0-11)
setDate(date) 設(shè)置實例對象對應(yīng)的每個月的幾號(1-31),返回改變后毫秒時間戳
setHours(hour [, min, sec, ms]) 設(shè)置小時(0-23)
setMinutes(min [, sec, ms]) 設(shè)置分鐘(0-59)
setSeconds(sec [, ms]) 設(shè)置秒(0-59)
setMilliseconds() 設(shè)置毫秒(0-999)

這些方法基本是跟get*方法一一對應(yīng)的,但是沒有setDay方法,因為星期幾是計算出來的,而不是設(shè)置的

7. 將日期轉(zhuǎn)換為指定的格式

// 可以為Date原型添加如下的方法
Date.prototype.format = function(fmt) { 
     var o = { 
        "M+" : this.getMonth()+1,                 //月份 
        "d+" : this.getDate(),                    //日 
        "h+" : this.getHours(),                   //小時 
        "m+" : this.getMinutes(),                 //分 
        "s+" : this.getSeconds(),                 //秒 
        "q+" : Math.floor((this.getMonth()+3)/3), //季度 
        "S"  : this.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}     

// 調(diào)用
var time = new Date().format("yyyy-MM-dd hh:mm:ss");
console.log(time);   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容