Date對象是 JAVAScript原生的時間庫。它以1970年1月1日00:00:00作為時間的零點,可以表示的時間范圍是前后各1億天(單位為毫秒)。
Date對象的創建:
Date可以當作構造函數使用。對它使用new命令,會返回一個Date對象的實例;如果不加參數,實例代表的就是當前時間。
var today = new Date();
today.toString();
// Sun Feb 23 2020 15:09:42 GMT+0800 (中國標準時間)
// 對Date實例求值,返回的是一個字符串,代表該實例對應的時間。
日期的處理:
oDate.getDate(); // 返回一個月中的某一天 (1 ~ 31)
oDate.getDay(); // 返回一周中的某一天 (0 ~ 6)
oDate.getMonth(); // 返回月份 (0 ~ 11)
oDate.getFullYear(); // 以四位數字返回年份
作為構造函數時,Date對象可以接受多種格式的參數,返回一個該參數對應的時間實例:
// 參數為時間零點開始計算的毫秒數
new Date(1378218728000); //(最常用)
// 代表年、月、日、小時、分鐘、秒、毫秒
new Date(2020, 1, 23, 0, 0, 0, 0)
// Sun Feb 23 2020 00:00:00GMT+0800
// 參數也可以是一個字符串(最常用)
// 日期字符串應該符合RFC 2822和ISO 8061這兩個標準,即YYYY-MM-DDTHH:mm:ss.sssZ格式
new Date('2020-2-23');
new Date('2020/2/23');
new Date('02/23/2020');
new Date('2020-FEB-23');
new Date('FEB, 23, 2020');
new Date('Feberuary, 23, 2020');
new Date('23 Feb 2020');
new Date('23, Feberuary, 2020');
// 上面多種日期字符串的寫法,返回的都是同一個時間
獲取日期時間:
注意,月份從0開始計算,但是,天數從1開始計算。另外,除了日期的默認值為1,小時、 分鐘、秒鐘和毫秒的默認值都是0。
oDate.getDate(); // 返回一個月中的某一天 (1 ~ 31)
oDate.getDay(); // 返回一周中的某一天 (0 ~ 6)
oDate.getMonth(); // 返回月份 (0 ~ 11)
oDate.getFullYear(); // 以四位數字返回年份
oDate.getHours(); // 返回當前小時(0-23)
oDate.getMinutes(); // 返回當前分鐘 (0 ~ 59)
oDate.getSeconds(); //返回當前秒(0 ~ 59)
oDate.getMillisenconds();// 返回當前毫秒(0 ~ 999)
oDate.getTime(); //返回1970年1月1日至今的毫秒數
設置日期時間:
這些參數如果超出了正常范圍,就會被自動折算。比如,如果月設為15,就折算為下一年的4月
oDate.setDate(); //設置月中的某一天 (1 ~ 31)
oDate.setMonth(); //設置月份 (0 ~ 11)
oDate.setFullYear(); //設置年份(四位數)
oDate.setHours(); //設置小時(0-23)
oDate.setMinutes(); //設置分鐘 (0 ~ 59)
oDate.setSeconds(); //設置秒(0 ~ 59)
oDate.setMillisenconds(); //設置毫秒(0 ~ 999)
oDate.setTime(); //設置1970年1月1日至今的毫秒數
日期的運算:
類型自動轉換時,Date實例如果轉為數值,則等于對應的毫秒數;
如果轉為字符串,則等于對應的日期字符串。
所以,兩個日期實例對象進行減法運算時,返回的是它們間隔的毫秒數;進行加法運算時,返回的是兩個字符串連接而成的新字符串。
var d1 = new Date(2020, 2, 23);
var d2 = new Date(2020, 3, 29);
d2 - d1
// 518400000
d2 + d1
// Sun Mar 29 2020 00:00:00 GMT+0800 (中國標準時間)Mon Mar 23 2020 00:00:00 GMT+0800 (中國標準時間)
靜態方法:
Date.parse():方法用來解析日期字符串,返回該時間距離時間零點(1970年1月1日 00:00:00)的毫秒數。
日期字符串應該符合 RFC 2822 和 ISO 8061 這兩個標準,即YYYY-MM-DDTHH:mm:ss.sssZ格式,其中最后的Z表示時區。但是,其他格式也可以被解析,例如:
Date.parse('Dec 8, 2010')
Date.parse('January 20, 2020 12:32:13')
Date.parse('Mon, 12 Dec 2020 13:30:00 GMT')
Date.parse('Mon, 21 Dec 2020 13:30:00 +0430')
Date.parse('2010-10-10')
Date.parse('2012-12-10T12:12:00')
setInterval(func,time):
有兩個參數,第一個參數是一個函數,第二個參數是時間間隔,單位是毫秒;
每間隔time毫秒,會執行一次函數。
// setInterval的返回值是一個數字
function box(){
console.log(1)
}
var timer = setInerval(box,1000);
// 上面代碼意思是,每間隔1000毫秒,box函數執行一次。
setTimeout(func,time):
第一個參數func是將要推遲執行的函數名,第二個參數time是推遲執行的毫秒數。
setTimeout函數用來指定某個函數或某段代碼,在多少毫秒之后執行。它返回一個整數,表示定時器的編號,以后可以用來取消這個定時器。
btn.onclick= function(){
setTimeout (function(){
alert("我出現在2秒后");
},2000)
}
clearTimeout():取消延時器
clearInterval():取消定時器
setTimeout()和setInterval函數,都返回一個整數值,表示計數器編號。將該整數傳入clearTimeout和clearInterval函數,就可以取消對應的定時器。
var f1 = setTimeout(f, 1000);
var f2 = setInterval(f, 1000);
clearTimeout(f1);
clearInterval(f2);
// 上面代碼中,回調函數f不會再執行了,因為兩個定時器都被取消了。