- JavaScript從入門到精通(微視頻精編版)
- 明日科技
- 2166字
- 2020-09-01 15:02:27
6.2 Date對象

視頻講解
在Web開發(fā)過程中,可以使用JavaScript的Date對象(日期對象)來實現(xiàn)對日期和時間的控制。如果想在網(wǎng)頁中顯示計時時鐘,就得重復(fù)生成新的Date對象來獲取當(dāng)前計算機的時間。用戶可以使用Date對象執(zhí)行各種使用日期和時間的過程。
6.2.1 創(chuàng)建Date對象
日期對象是對一個對象數(shù)據(jù)類型求值,該對象主要負責(zé)處理與日期和時間有關(guān)的數(shù)據(jù)信息。在使用Date對象前,首先要創(chuàng)建該對象,其創(chuàng)建格式如下:
dateObj = new Date() dateObj = new Date(dateVal) dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
Date對象語法中各參數(shù)的說明如表6.3所示。
表6.3 Date對象的參數(shù)說明

下面以示例的形式來介紹如何創(chuàng)建日期對象。
例如,輸出當(dāng)前的日期和時間。代碼如下:
01 var newDate=new Date(); //創(chuàng)建當(dāng)前日期對象 02 document.write(newDate); //輸出當(dāng)前日期和時間
運行結(jié)果為:
Tue May 9 17:55:03 UTC+0800 2017
例如,用年、月、日(2015-6-20)來創(chuàng)建日期對象。代碼如下:
01 var newDate=new Date(2015,5,20); //創(chuàng)建指定年月日的日期對象 02 document.write(newDate); //輸出指定日期和時間
運行結(jié)果為:
Sat Jun 20 00:00:00 UTC+0800 2015
例如,用年、月、日、小時、分鐘、秒(2015-6-20 13:12:56)來創(chuàng)建日期對象。代碼如下:
01 var newDate=new Date(2015,5,20,13,12,56); //創(chuàng)建指定時間的日期對象 02 document.write(newDate); //輸出指定日期和時間
運行結(jié)果為:
Sat Jun 20 13:12:56 UTC+0800 2015
例如,以字符串形式創(chuàng)建日期對象(2015-6-20 13:12:56)。代碼如下:
01 var newDate=new Date("Jun 20,2015 13:12:56"); //以字符串形式創(chuàng)建日期對象 02 document.write(newDate); //輸出指定日期和時間
運行結(jié)果為:
Sat Jun 20 13:12:56 UTC+0800 2015
例如,以另一種字符串的形式創(chuàng)建日期對象(2015-6-20 13:12:56)。代碼如下:
01 var newDate=new Date("2015/06/20 13:12:56"); //以字符串形式創(chuàng)建日期對象 02 document.write(newDate); //輸出指定日期和時間
運行結(jié)果為:
Sat Jun 20 13:12:56 UTC+0800 2015
6.2.2 Date對象的屬性
Date對象的屬性有constructor和prototype。在這里介紹這兩個屬性的用法。
1.constructor屬性
constructor屬性可以判斷一個對象的類型,該屬性引用的是對象的構(gòu)造函數(shù)。
語法如下:
object.constructor
必選項object是對象實例的名稱。
例如,判斷當(dāng)前對象是否為日期對象。代碼如下:
01 var newDate=new Date(); //創(chuàng)建當(dāng)前日期對象 02 if (newDate.constructor==Date) //如果當(dāng)前對象是日期對象 03 document.write("日期型對象"); //輸出字符串
運行結(jié)果為:
日期型對象
2.prototype屬性
prototype屬性可以為Date對象添加自定義的屬性或方法。
語法如下:
Date.prototype.name=value
參數(shù)說明。
name:要添加的屬性名或方法名。
value:添加屬性的值或執(zhí)行方法的函數(shù)。
例如,用自定義屬性來記錄當(dāng)前的年份。代碼如下:
01 var newDate=new Date(); //創(chuàng)建當(dāng)前日期對象 02 Date.prototype.mark=newDate.getFullYear(); //向日期對象中添加屬性 03 document.write(newDate.mark); //輸出新添加的屬性的值
運行結(jié)果為:
2018
6.2.3 Date對象的方法
Date對象是JavaScript的一種內(nèi)部對象。該對象沒有可以直接讀寫的屬性,所有對日期和時間的操作都是通過方法完成的。Date對象的方法如表6.4所示。
表6.4 Date對象的方法

說明
UTC是協(xié)調(diào)世界時(Coordinated Universal Time)的簡稱,GMT是格林威治時(Greenwich Mean Time)的簡稱。
注意
應(yīng)用Date對象中的getMonth()方法獲取的值要比系統(tǒng)中實際月份的值小1。
【例6.02】應(yīng)用Date對象中的方法獲取當(dāng)前的完整年份、月份、日期、星期、小時數(shù)、分鐘數(shù)和秒數(shù),將當(dāng)前的日期和時間分別連接在一起并輸出。程序代碼如下:(實例位置:資源包\源碼\06\6.02)
01 var now=new Date(); //創(chuàng)建日期對象 02 var year=now.getFullYear(); //獲取當(dāng)前年份 03 var month=now.getMonth()+1; //獲取當(dāng)前月份 04 var date=now.getDate(); //獲取當(dāng)前日期 05 var day=now.getDay(); //獲取當(dāng)前星期 06 var week=""; //初始化變量 07 switch(day){ 08 case 1: //如果變量day的值為1 09 week="星期一"; //為變量賦值 10 break; //退出switch語句 11 case 2: //如果變量day的值為2 12 week="星期二"; //為變量賦值 13 break; //退出switch語句 14 case 3: //如果變量day的值為3 15 week="星期三"; //為變量賦值 16 break; //退出switch語句 17 case 4: //如果變量day的值為4 18 week="星期四"; //為變量賦值 19 break; //退出switch語句 20 case 5: //如果變量day的值為5 21 week="星期五"; //為變量賦值 22 break; //退出switch語句 23 case 6: //如果變量day的值為6 24 week="星期六"; //為變量賦值 25 break; //退出switch語句 26 default: //默認值 27 week="星期日"; //為變量賦值 28 break; //退出switch語句 29 } 30 var hour=now.getHours(); //獲取當(dāng)前小時數(shù) 31 var minute=now.getMinutes(); //獲取當(dāng)前分鐘數(shù) 32 var second=now.getSeconds(); //獲取當(dāng)前秒數(shù) 33 //為字體設(shè)置樣式 34 document.write("<span style='font-size:24px;font-family:楷體;color:#FF9900'>"); 35 document.write("今天是:"+year+"年"+month+"月"+date+"日 "+week); //輸出當(dāng)前的日期和星期 36 document.write("<br>現(xiàn)在是:"+hour+":"+minute+":"+second); //輸出當(dāng)前的時間 37 document.write("</span>"); //輸出</span>結(jié)束標(biāo)記
運行結(jié)果如圖6.2所示。

圖6.2 輸出當(dāng)前的日期和時間
應(yīng)用Date對象的方法除了可以獲取日期和時間之外,還可以設(shè)置日期和時間。在JavaScript中只要定義了一個日期對象,就可以針對該日期對象的日期部分或時間部分進行設(shè)置。示例代碼如下:
01 var myDate=new Date(); //創(chuàng)建當(dāng)前日期對象 02 myDate.setFullYear(2012); //設(shè)置完整的年份 03 myDate.setMonth(5); //設(shè)置月份 04 myDate.setDate(12); //設(shè)置日期 05 myDate.setHours(10); //設(shè)置小時 06 myDate.setMinutes(10); //設(shè)置分鐘 07 myDate.setSeconds(10); //設(shè)置秒鐘 08 document.write(myDate); //輸出日期對象
運行結(jié)果為:
Tue Jun 12 10:10:10 UTC+0800 2012
在腳本編程中可能需要處理許多關(guān)于日期的計算,例如計算經(jīng)過固定天數(shù)或星期之后的日期或計算兩個日期之間的天數(shù)。在這些計算中,JavaScript日期值都是以毫秒為單位的。
【例6.03】應(yīng)用Date對象中的方法獲取當(dāng)前日期距離明年元旦的天數(shù)。程序代碼如下:(實例位置:資源包\源碼\06\6.03)
01 var date1=new Date(); //創(chuàng)建當(dāng)前的日期對象 02 var theNextYear=date1.getFullYear()+1; //獲取明年的年份 03 date1.setFullYear(theNextYear); //設(shè)置日期對象date1中的年份 04 date1.setMonth(0); //設(shè)置日期對象date1中的月份 05 date1.setDate(1); //設(shè)置日期對象date1中的日期 06 var date2=new Date(); //創(chuàng)建當(dāng)前的日期對象 07 var date3=date1.getTime()-date2.getTime(); //獲取兩個日期相差的毫秒數(shù) 08 var days=Math.ceil(date3/(24*60*60*1000)); //將毫秒數(shù)轉(zhuǎn)換成天數(shù) 09 alert("今天距離明年元旦還有"+days+"天"); //輸出結(jié)果
運行結(jié)果如圖6.3所示。

圖6.3 輸出當(dāng)前日期距離明年元旦的天數(shù)
在Date對象的方法中還提供了一些以“to”開頭的方法,這些方法可以將Date對象轉(zhuǎn)換為不同形式的字符串,示例代碼如下:
01 <h3>將Date對象轉(zhuǎn)換為不同形式的字符串</h3> 02 <script type="text/javascript"> 03 var newDate=new Date(); //創(chuàng)建當(dāng)前日期對象 04 document.write(newDate.toString()+"<br>"); //將Date對象轉(zhuǎn)換為字符串 05 document.write(newDate.toTimeString()+"<br>"); //將Date對象的時間部分轉(zhuǎn)換為字符串 06 document.write(newDate.toDateString()+"<br>"); //將Date對象的日期部分轉(zhuǎn)換為字符串 07 document.write(newDate.toLocaleString()+"<br>"); //將Date對象轉(zhuǎn)換為本地格式的字符串 08 //將Date對象的時間部分轉(zhuǎn)換為本地格式的字符串 09 document.write(newDate.toLocaleTimeString()+"<br>"); 10 //將Date對象的日期部分轉(zhuǎn)換為本地格式的字符串 11 document.write(newDate.toLocaleDateString()); 12 </script>
運行結(jié)果如圖6.4所示。

圖6.4 將日期對象轉(zhuǎn)換為不同形式的字符串
- Python編程自學(xué)手冊
- Oracle WebLogic Server 12c:First Look
- Mastering Adobe Captivate 2017(Fourth Edition)
- Mastering Entity Framework
- 前端架構(gòu):從入門到微前端
- 零基礎(chǔ)學(xué)Java程序設(shè)計
- Learning DHTMLX Suite UI
- Hands-On Full Stack Development with Go
- INSTANT Sinatra Starter
- Python深度學(xué)習(xí)原理、算法與案例
- Python+Tableau數(shù)據(jù)可視化之美
- Node學(xué)習(xí)指南(第2版)
- Julia 1.0 Programming Complete Reference Guide
- Java程序設(shè)計與項目案例教程
- 邊玩邊學(xué)Scratch3.0少兒趣味編程