更新時(shí)間:2022年12月06日11時(shí)09分 來(lái)源:傳智教育 瀏覽次數(shù):
JavaScript中的日期對(duì)象用來(lái)處理日期和時(shí)間。例如,秒殺活動(dòng)中日期的實(shí)時(shí)顯示、時(shí)鐘效果、在線日歷等。下面將對(duì)日期對(duì)象進(jìn)行詳細(xì)講解。
日期對(duì)象的使用
JavaScript中的日期對(duì)象需要使用new Date()實(shí)例化對(duì)象才能使用,Date()是日期對(duì)象的構(gòu)造函數(shù)。在創(chuàng)建日期對(duì)象時(shí),可以為Date()構(gòu)造函數(shù)傳入一些參數(shù),來(lái)表示具體的日期,其創(chuàng)建方式如下。
<script> // 方式1:沒(méi)有參數(shù),使用當(dāng)前系統(tǒng)的當(dāng)前時(shí)間作為對(duì)象保存的時(shí)間 var datel = new Date(); //輸出結(jié)果:Wed Nov 17 2021 14:59:56 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(datel); // 方式2:傳入年、月、日、時(shí)、分、秒(月的范圍是0~11,即真實(shí)月份-1) var date2 =new Date(2019,10,16,10, 57,56); //輸出結(jié)果:Sat Nov 16 2019 10:57:56 GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(date2); // 用字符串表示日期和時(shí)間 var date3 = new Date('2019-10-16 10:57:56'); // 輸出結(jié)果:Wed Oct 16 2019 10:57:56 GMT+0800(中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(date3); </script>
在使用方式1時(shí),其返回的datel對(duì)象保存的是對(duì)象創(chuàng)建時(shí)的時(shí)間;使用方式2時(shí),最少需要指定年、月兩個(gè)參數(shù),后面的參數(shù)在省略時(shí)會(huì)自動(dòng)使用默認(rèn)值;使用方式3時(shí),最少需要指定年份。另外,當(dāng)傳人的數(shù)值大于合理范圍時(shí),會(huì)自動(dòng)轉(zhuǎn)換成相鄰數(shù)值(如方式2將月份設(shè)為-1表示去年12月,設(shè)為12表示明年1月)。
在獲取到日期對(duì)象后,直接輸出對(duì)象得到的是一個(gè)字符串 表示的日期和時(shí)間。如果想要用其他格式來(lái)表示這個(gè)日期和時(shí)間,可以通過(guò)調(diào)用日期對(duì)象的相關(guān)方法來(lái)實(shí)現(xiàn)。日期對(duì)象的常用方法分為get和set兩大類,分別如表1和表2所示。
Date對(duì)象的常用get方法 |
|
方法 |
作用 |
getFullYear() | 獲取表示年份的4位數(shù)字 |
getMouth() | 獲取月份,范圍為0~ 11 (0表示一月, 1表示二月,依次類推) |
getDate() | 獲取月份中的某一天,范圍1~31 |
getHours() | 獲取小時(shí)數(shù),范圍為0~23 |
getMinutes() | 獲取分鐘數(shù),范圍為0~59 |
getSeconds() | 獲取秒數(shù),范圍為0~59 |
getMilliseconds() | 獲取毫秒數(shù),范圍為0~999 |
getTime() | 獲取從1970-01-01 00:00:00 距離Date對(duì)象所代表時(shí)間的毫秒數(shù) |
表1
Date對(duì)象的常用get方法 |
|
方法 |
作用 |
setFullYear(value) | 設(shè)置年份 |
setMouth(value) | 設(shè)置月份 |
setDate(value) | 設(shè)置月份中的某一天 |
setHours() | 設(shè)置小時(shí)數(shù) |
setMinutes() | 設(shè)置分鐘數(shù) |
setSeconds() | 設(shè)置秒數(shù) |
setMilliseconds() | 設(shè)置毫秒數(shù) |
setTime() | 通過(guò)從1970-01-01 00:00:00 計(jì)時(shí)的毫秒數(shù)來(lái)設(shè)置時(shí)間 |
表2
下面我們通過(guò)具體代碼演示Date對(duì)象的使用,在控制臺(tái)中輸出當(dāng)前日期。
<script> var date = new Date(); // 基于當(dāng)前日期時(shí)間創(chuàng)建Date對(duì)象 var year = date.getFullYear(); //獲取年 var month = date.getMonth() + 1; //獲取月,范圍為0~ 11 (0表示一月, 1表示二月,依次類推) var day = date.getDate(); //獲取日 //通過(guò)數(shù)組將星期值轉(zhuǎn)換為字符串 var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']; //輸出date對(duì)象保存的時(shí)間,示例:今天是2021年11月17日星期三 console.log('今天是' + year + '年'+ month + '月'+ day + '日' + week[date.getDate() % 7]); </script>
在上述代碼中,第9行的week[date.getDay() % 7]用來(lái)從date對(duì)象中獲取星期值,然后作為數(shù)組的索引到week數(shù)組中取出對(duì)應(yīng)的星期字符串。
在開(kāi)發(fā)中,還經(jīng)常需要將日期對(duì)象中的時(shí)間轉(zhuǎn)換成指定的格式,示例代碼如下。
<script> //返回當(dāng)前時(shí)間,格式為:時(shí):分:秒,用兩位數(shù)字表示 function getTime() { var time = new Date(); var h = time.getHours(); h = h<10 ? '0'+ h:h; var m = time.getMinutes(); m = m<10 ? '0'+ m:m; var s = time.getSeconds(); s = s<10 ? '0' + s:s; return h +':'+ m +':'+ s; } console.log(getTime()); //輸出結(jié)果示例: 15:06:55 </script>
在上述代碼中,第6、8、10行代碼用來(lái)判斷給定數(shù)字是否為一位數(shù),如果是一位數(shù)則在前面加上“0”。
北京校區(qū)