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