javascript
date js 半年_JavaScript Date对象
Date對(duì)象
源碼下載
最初接觸編程,沒(méi)有接觸過(guò)非常講究時(shí)間控制的領(lǐng)域,往往對(duì)時(shí)間沒(méi)有概念,單片機(jī)編程,嵌入式開(kāi)發(fā),操作系統(tǒng),無(wú)人及姿態(tài)控制往往會(huì)關(guān)注毫秒ms、微秒us級(jí)的時(shí)間概念。
什么是并行,什么是串行,什么是并發(fā)。計(jì)算機(jī)的CPU是逐條執(zhí)行指令的,每條指令都要花費(fèi)一定時(shí)間,只不過(guò)短小的程序執(zhí)行的太快,幾個(gè)毫秒ms,甚至微秒,沒(méi)有時(shí)間的感覺(jué)。
本節(jié)課利用Javascript內(nèi)置的對(duì)象Date對(duì)象,來(lái)測(cè)試一段代碼的執(zhí)行時(shí)間。
Date對(duì)象需要通過(guò)new和構(gòu)造函數(shù)Date()創(chuàng)建,創(chuàng)建完成后可以調(diào)用對(duì)象的大量?jī)?nèi)置默認(rèn)支持屬性和方法。Javascript語(yǔ)言引入Date對(duì)象的目的就是為了處理編程中的時(shí)間問(wèn)題,
該對(duì)象依賴Javascript程序的運(yùn)行環(huán)境,可以通過(guò)瀏覽器解析或者nodejs解釋器。
下面的代碼示例是利用Javascript內(nèi)置對(duì)象Date測(cè)試程序性能。
//測(cè)試for循環(huán)100萬(wàn)次計(jì)算加法運(yùn)算時(shí)間9 let S =0;10 let T0 =newDate();//創(chuàng)建對(duì)象Date,返回此刻時(shí)間賦值給變量T0for(let i =0;i<1000;i++){//外循環(huán)1000for(let i =0;i<1000;i++){//內(nèi)循環(huán)100013 S +=1;14 }
15 }
16 let T1 =newDate();//創(chuàng)建對(duì)象Date,返回此刻時(shí)間賦值給變量T117 document.write(T1-T0);//求解T1-T0時(shí)間差,便是for運(yùn)行時(shí)間,單位:ms
體驗(yàn)測(cè)試
不改變程序多次刷新瀏覽器查看運(yùn)行時(shí)間變化,是穩(wěn)定,還是波動(dòng)。可以嘗試更改for循環(huán)程序中的循環(huán)次數(shù)控制參數(shù)1000,刷新瀏覽器查看時(shí)間變化。
代碼解析
代碼比較簡(jiǎn)單,直接來(lái)看第十行創(chuàng)建Date對(duì)象的代碼let T0 = new Date();執(zhí)行該語(yǔ)句后,
從對(duì)象的角度看創(chuàng)建了一個(gè)對(duì)象,這樣的話可以通過(guò)d對(duì)象調(diào)用Date的相關(guān)方法和屬性。
該對(duì)象也是一個(gè)是時(shí)間值,這個(gè)主要體現(xiàn)在利用運(yùn)算符運(yùn)算的時(shí)候,比如一個(gè)字符串類型數(shù)據(jù)和數(shù)字類型數(shù)據(jù)進(jìn)行==比較運(yùn)算,
Javascript系統(tǒng)會(huì)首先把它們轉(zhuǎn)換成同一種數(shù)據(jù)類型再進(jìn)行比較,
兩個(gè)對(duì)象進(jìn)行減法計(jì)算,首先要做的就是把對(duì)象類型數(shù)據(jù)轉(zhuǎn)化為數(shù)字類型。
可能很多教程說(shuō)它是時(shí)間,那是字符串格式時(shí)間,還是數(shù)值類型的時(shí)間。使用typeof關(guān)鍵字測(cè)試他就是對(duì)象,
那么對(duì)象通過(guò)什么樣的機(jī)制,能夠轉(zhuǎn)化成數(shù)字類型數(shù)據(jù),如果不明白,先不用管,先記住Date的用法。隨著學(xué)習(xí)的深入,嘗試去使用各種類型的構(gòu)造函數(shù)自然會(huì)明白。
T0是當(dāng)前的時(shí)間,也是一個(gè)對(duì)象。T0是執(zhí)行for循環(huán)的開(kāi)始時(shí)間,T1是for循環(huán)執(zhí)行結(jié)束的時(shí)間。
兩個(gè)變量時(shí)間差就是for循環(huán)的執(zhí)行時(shí)間,在瀏覽器網(wǎng)頁(yè)上顯示的時(shí)間數(shù)值是整數(shù),單位是:ms。
Math對(duì)象方法
toString()
執(zhí)行語(yǔ)句new Date();返回的是一個(gè)對(duì)象,從數(shù)據(jù)的角度看,是對(duì)象類型數(shù)據(jù),值就是時(shí)間,Date對(duì)象提供了方法toString()可以把對(duì)象類型數(shù)據(jù)
轉(zhuǎn)化為字符串類型數(shù)據(jù)。
應(yīng)用案例
//T0對(duì)象轉(zhuǎn)字符串
let str = T0.toString();
getDate()
通過(guò)該方法可以從對(duì)象獲得本月第幾號(hào)的日期,比如今天是3月13號(hào),那么T0.getDate()的返回值是一個(gè)數(shù)字類型數(shù)據(jù)13
getMonth()
同getDate()方法使用規(guī)則,只是返回的數(shù)據(jù)是今天的月份。
方法總結(jié)表格
方法
返回
數(shù)據(jù)類型
getHours()
時(shí)
number
getMinutes()
分
number
getSeconds()
秒
number
getFullYear()
年
number
getMonth()
月
number
getDay()
日
number
擴(kuò)展
時(shí)間單位
相鄰單位進(jìn)制是1000,比如1s=10^3ms,時(shí)間級(jí)別依次下降
名稱
秒
毫秒
微秒
納秒
單位
s
ms
us
ns
CPU的頻率級(jí)別GHz,執(zhí)行一條指令的時(shí)間級(jí)別是納秒ns級(jí),單片機(jī)的執(zhí)行速度在us級(jí)別,一般一條Javascript語(yǔ)句會(huì)被解釋器編譯成幾條指令
下面做一個(gè)假設(shè),CPU執(zhí)行一條指令3ns,for循環(huán)結(jié)構(gòu)被編譯后假設(shè)執(zhí)行一次是3條指令,100萬(wàn)次,就是3X10^6條指令,那么執(zhí)行時(shí)間就是9X10^6ns,換算單位就是9ms
以上數(shù)字全為假設(shè),具體值有偏差,但是在數(shù)量級(jí)的層面基本是符合實(shí)際的,有興趣的話可以多了解CPU結(jié)構(gòu)和操作系統(tǒng)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的date js 半年_JavaScript Date对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 超级好用的5款办公软件,极具办事效率
- 下一篇: [AH/HNOI2017]大佬