Date對象是 JavaScript 原生的時間庫。它以1970年1月1日00:00:00做爲時間的零點,能夠表示的時間範圍是先後各1億天(單位爲毫秒)。下面是本次分享的列表:javascript
Date()
普通函數用法和構造函數用法Date.now(),Date.parse(),Date.UTC()
valueOf()
Date()函數用法和構造函數用法html
`java
Date() // 輸出 Fri Oct 12 2018 16:41:20 GMT+0800
Date(2018, 10, 12) // 輸出 Fri Oct 12 2018 16:41:20 GMT+0800
複製代碼
` 2. Date()構造函數用法,使用new關鍵字實例化Date,返回一個Date對象的實例,若是不設置參數,返回的就是當前時間對象的實例:函數
`spa
var curDate = new Date();
console.log(curDate) // 當前時間字符串 Fri Oct 12 2018 16:57:10 GMT+0800
curDate.getFullYear() // 當前時間的年
curDate.getMonth() // 當前時間的月
curDate.getDate() // 當前時間的天
複製代碼
`實例化Date時接收參數,而所謂接收參數,通俗的講就是,給實例設置一個初始化的時間,不在取當前時間,實例化Date的參數能夠接收多種格式,第一種毫秒格式的整數參數:prototype
`code
var msDate = new Date(1539302400000) // Date 2018-10-12T00:00:00.000Z
複製代碼
` 第二種是日期字符串,而日期字符串格式,只要能夠被Date.parse()解析的,就能夠做爲參數應用htm
`對象
new Date('2018/10/12') // Date 2018-10-12T00:00:00.000Z
new Date('2018-10-12') // Date 2018-10-12T00:00:00.000Z
new Date('10/12/2018') // Date 2018-10-12T00:00:00.000Z
複製代碼
` 第三種是年,月,日,時,分,秒的整數參數ip
`
var setMyDate = new Date(2018, 10, 12, 17, 17, 30);
setMyDate.getFullYear(); // 輸出 2018
setMyDate.getMonth(); //輸出 10
setMyDate.getDate(); // 輸出 12
// ... 依次類推輸出設置的時間
複製代碼
` 對於第三種年月日時分秒整數參數設置時,必須設置年月兩個參數,其餘參數可選擇性設置,由於若是隻設置一個參數,就會被看成毫秒式格式:
`
new Date(2018) //設置一個參數 Thu Jan 01 1970 08:00:02 GMT+0800 (CST)
new Date(2018, 10) //設置兩個參數 Date 2018-10-22T00:00:00.000Z
複製代碼
第三種年月日時分秒整數參數設置,還能夠設置爲負數,負數表示從設置的時間日減去相應的時間
new Date(2018, -1) // Sat Dec 01 2017 00:00:00 GMT+0800 (CST)
new Date(2018, 0, -1) // Sun Dec 30 2017 00:00:00 GMT+0800 (CST)
複製代碼
`
Date實例各個參數的取值範圍以下:
Date日期運算
Date的日期運算主要應用+和-運算符,+運算符就是把兩個Date實例的時間字符串拼接: `
var msDate = new Date(2018, 10);
var myDate = new Date(2015, 10, 12);
console.log(msDate + myDate) // Thu Nov 01 2018 00:00:00 GMT+0800Thu Nov 12 2015 00:00:00 GMT+0800
複製代碼
-運算符會更具實用性,-運算符會把兩個實例對象轉換爲它們的毫秒數進行相減,得出兩個實例間隔的毫秒數:
var msDate = new Date(2018, 10);
var myDate = new Date(2015, 10, 12);
console.log(msDate - myDate) // 93744000000
複製代碼
`
Date靜態方法
Date.now(),Date.parse(),Date.UTC()
Date.now()
方法返回當前時間距離(1970年1月1日 00:00:00 UTC)的毫秒數: `
Date.now() // 1539338654125
複製代碼
`
Date.parse()
方法用來解析日期字符串,返回該時間距離(1970年1月1日 00:00:00 UTC)的毫秒數,若是Date.parse()失敗,則返回NaN: `
Date.parse('2012-01-01') // 1325376000000
Date.parse('2015/01/01') // 1420041600000
Date.parse('***') // NaN
複製代碼
`
Date.UTC
方法接受年、月、日等變量做爲參數,返回該時間距離時間零點(1970年1月1日 00:00:00 UTC)的毫秒數。
`
Date.UTC(2018, 10, 12, 18, 15, 30) // 1542046530000
複製代碼
`
該方法的參數用法與Date構造函數徹底一致,好比月從0開始計算,日期從1開始計算。區別在於Date.UTC方法的參數,會被解釋爲 UTC 時間(世界標準時間),Date構造函數的參數會被解釋爲當前時區的時間。
Date實例方法get系列,set系列,to系列,
valueOf()
Date的實例對象,有幾十個本身的方法,除了valueOf和toString,能夠分爲如下三類。
to
類:從Date對象返回一個字符串,表示指定的時間。get
類:獲取Date對象的日期和時間。set
類:設置Date對象的日期和時間。Date.prototype.valueOf(),value方法返回實例對象距離時間零點(1970年1月1日00:00:00 UTC)對應的毫秒數,該方法等同於getTime方法。
`
var myDate = new Date()
myDate.valueOf(); // 1541001600000
myDate.getTime(); // 1541001600000
複製代碼
` (1)to系列方法
Date.prototype.toString()
方法返回一個完整的日期字符串,和實例對象輸出同樣;Date.prototype.toUTCString()
方法返回對應的 UTC 時間,也就是比北京時間晚8個小時;Date.prototype.toISOString()
方法返回對應時間的 ISO8601 寫法;Date.prototype.toJSON()
方法返回一個符合 JSON 格式的 ISO 日期字符串,與toISOString方法的返回結果徹底相同;Date.prototype.toDateString()
方法返回日期字符串(不含小時、分和秒);Date.prototype.toTimeString()
toTimeString方法返回時間字符串(不含年月日);Date.prototype.toLocaleString()
方法返回完整的本地時間;Date.prototype.toLocaleDateString()
方法返回本地日期(不含小時、分和秒);Date.prototype.toLocaleTimeString()
方法返回本地時間(不含年月日);(2)get系列方法
get系列,是獲取Date實例上的時間,new Date()已經初始化了一個時間。
getTime()
:返回實例距離1970年1月1日00:00:00的毫秒數,等同於valueOf方法。getDate()
:返回實例對象對應每月的幾號(從1開始)。getDay()
:返回星期幾,星期日爲0,星期一爲1,以此類推。getYear()
:返回距離1900的年數。getFullYear()
:返回四位的年份。getMonth()
:返回月份(0表示1月,11表示12月)。getHours()
:返回小時(0-23)。getMilliseconds()
:返回毫秒(0-999)。getMinutes()
:返回分鐘(0-59)。getSeconds()
:返回秒(0-59)。getTimezoneOffset()
:返回當前時間與 UTC 的時區差別,以分鐘表示,返回結果考慮到了夏令時因素(3)set系列方法
set系列,是對實例對象上的時間從新設置,也能夠理解成修改,由於Date構造函數建立時,就已經初始化了一個時間,給new Date()傳入參數就是設置時間:
setDate()
:設置實例對象對應的每月的幾號(1-31),返回改變後毫秒時間戳。setYear()
: 設置距離1900年的年數。setFullYear()
:設置四位年份。setHours()
:設置小時(0-23)。setMilliseconds()
:設置毫秒(0-999)。setMinutes()
:設置分鐘(0-59)。setMonth()
:設置月份(0-11)。setSeconds()
:設置秒(0-59)。setTime()
:設置毫秒時間戳。get系列和set系列還有對應的UTC世界標準時間的get方法,這裏將不在一一列舉了,你們也能夠去w3c官網查看;
結語
Date日期對象在看咱們的平常開發中使用仍是比較多的,最典型的就是你們都常常用的日曆控件,還有一些取本地時間來作的倒計時等。在下一章節的分享中,將分享一個日曆控件的和倒計時的demo,喜歡的朋友空調關注下,以示鼓勵,謝謝。
本次分享參考了網道WangDoc.com, w3c;