LabVIEW深入探索之絕對時(shí)間、通用時(shí)間和相對時(shí)間
小數(shù)部分雖然有4個(gè)字節(jié)(64位)構(gòu)成,但是實(shí)際上只有前8位(一個(gè)字節(jié))會發(fā)生變化,這也說明了“獲取時(shí)間日期(秒)”函數(shù)所能達(dá)到的最高精度是1/256秒。
小數(shù)部分的HEX進(jìn)制0X60是如何對應(yīng)0.375秒的那?
0X60用二進(jìn)制表示為:01100000,所以它表示的小數(shù)為:
0*0.5+1*0.25+1*0.125+。。。=0.375
四、什么是0時(shí)刻
當(dāng)我們從控件選板中建一個(gè)新的控件時(shí),控件此時(shí)的值為默認(rèn)值。數(shù)值型控件的默認(rèn)值如果沒有重新設(shè)置,一般是0。時(shí)間標(biāo)識作為特殊的數(shù)值控件,當(dāng)我們新創(chuàng)建時(shí),時(shí)間標(biāo)識控件的默認(rèn)值是什么?
從上圖可以看出,新創(chuàng)建的時(shí)間標(biāo)識的默認(rèn)值實(shí)際上也是0.從控件上看,數(shù)值0對應(yīng)的時(shí)間為0,日期不顯示。下面我們修改當(dāng)前時(shí)間控件,把時(shí)間修改成8點(diǎn)零1秒。
從上圖可以看出,Labview中的時(shí)間都是從1904年1月1日8點(diǎn)開始計(jì)算的,這個(gè)時(shí)間就是0時(shí)刻。我們計(jì)算時(shí)間時(shí)實(shí)際上計(jì)算的是從此刻開始經(jīng)歷的秒數(shù)。經(jīng)歷過的秒數(shù)可以是負(fù)數(shù),表示此時(shí)計(jì)算的時(shí)間在0時(shí)刻之前。
回過頭來再看看幫助文件是如何定義的:
LabVIEW將時(shí)間標(biāo)識保存為一個(gè)含四個(gè)整數(shù)的簇,其中前兩個(gè)帶符號整數(shù)(64位二進(jìn)制)表示自1904年1月1日周五凌晨[01-01-190400:00:00]以來無時(shí)區(qū)影響的所有秒數(shù)。后兩個(gè)不帶符號整數(shù)(64位二進(jìn)制)表示小數(shù)秒部分。
幫助文件中定義的和我們圖中演示的是不同的,原因在于我們使用的時(shí)間是包括時(shí)區(qū)的,世界各地的所在的時(shí)區(qū)是不同的,因此定義的0時(shí)刻是無時(shí)區(qū)影響的。
無時(shí)區(qū)影響的時(shí)間日期,LABVIEW中稱作“通用時(shí)間”。由于我們所使用的計(jì)算機(jī)操作系統(tǒng)中的時(shí)間日期是包括時(shí)區(qū)的,所以只有非常特別的場合才會涉及到“通用時(shí)間”,絕大多數(shù)場合談到的都是“絕對時(shí)間”和“相對時(shí)間”
五、絕對時(shí)間和相對時(shí)間
數(shù)值控件、時(shí)間標(biāo)識、格式化字符串、波形圖、波形圖表等控件均可以設(shè)置為時(shí)間格式,設(shè)置為時(shí)間時(shí)要求我們選擇“絕對時(shí)間”或者“相對時(shí)間”。所以我們有必要搞清楚什么是“絕對時(shí)間”和“相對時(shí)間”。
從0時(shí)刻開始計(jì)時(shí)的時(shí)間稱作絕對時(shí)間,我們通常說的“系統(tǒng)時(shí)間和日期”指的就是絕對時(shí)間?!跋鄬r(shí)間”在其它編程語言中,稱作“時(shí)間跨度”,相對時(shí)間并不關(guān)注開始計(jì)時(shí)的時(shí)刻,相對時(shí)間關(guān)注的是兩個(gè)絕對時(shí)間的差值,比如秒數(shù)百米賽跑用時(shí)幾秒,用的就是相對時(shí)間。
絕對時(shí)間可以用年、月、星期、日、時(shí)、分、秒、小數(shù)秒來表示,但是相對時(shí)間是用日、時(shí)、分、秒、小數(shù)秒來表示的,這與我們?nèi)粘5牧?xí)慣是有很大區(qū)別的。
在日常生活中,我們經(jīng)常說兩年過去,幾個(gè)月過去了,這樣的說法實(shí)際上是不精確的。因?yàn)槊磕甑奶鞌?shù)是不固定的,每個(gè)月的天數(shù)也是不固定的,因此無法用年和月表示準(zhǔn)確的相對時(shí)間。
只有星期、天、時(shí)、分、秒是準(zhǔn)確的,每小時(shí)為3600秒在任何情況下都是成立的,而年、月與秒之間是無法直接轉(zhuǎn)換的。
評論