坑(一)
最近偶然跟總監(jiān)聊起服務(wù)器惨寿,談到了Linux 。猛然想到删窒,我大三時(shí)也花過一段時(shí)間去嘗試Linux裂垦,零零總總也學(xué)到了一些知識(shí)。后來轉(zhuǎn)投Java肌索,開始忙著論文工作蕉拢,徹底將Linux拋棄了。這次決心再度撿起來,雖說撿了不一定會(huì)變成我的晕换,但多多嘗試午乓,多少會(huì)學(xué)點(diǎn)東西,這是沒錯(cuò)的闸准。
電腦原本是Win7和Win10雙系統(tǒng)益愈,因此直接格掉Win7上Linux,在版本選擇上糾結(jié)了很久夷家。大三時(shí)裝的是Ubuntu蒸其,這次想嘗新,于是換成了CentOS瘾英。裝了不到一天枣接,看到了一款不錯(cuò)的國(guó)產(chǎn)Linux ---- Deepin Linux
, 畫風(fēng)清新颂暇,評(píng)價(jià)不錯(cuò)缺谴,我想使用這款從Win到Linux的過渡應(yīng)該比較平滑吧,于是回家立馬又換成了Deepin耳鸯。又是一些熟悉的問題來了湿蛔,MBR,GRUB
這些县爬。搞定阳啥,開機(jī)!兩邊都運(yùn)行正常财喳,但是察迟,時(shí)間怎么是錯(cuò)的?Win10下的時(shí)間是錯(cuò)的耳高,Linux的時(shí)間也同樣是錯(cuò)的扎瓶。雖然可以手動(dòng)調(diào)整時(shí)間,但總覺得不完美泌枪,肯定是哪里出了問題概荷。既然兩個(gè)完全不相干的系統(tǒng)都出錯(cuò),那出錯(cuò)的地方肯定是它們的相交點(diǎn)碌燕,猛然想起误证,BIOS!我的電腦用了四年了修壕,沒換過電池愈捅,這次應(yīng)該是主板供電出現(xiàn)了異常。進(jìn)入BIOS一看慈鸠,果然時(shí)間錯(cuò)誤改鲫,更改過來后,兩邊時(shí)間一直正確。好了像棘,可以安心睡覺了稽亏。
坑(二)
一覺醒來,打開電腦缕题。Win10時(shí)間繼續(xù)出錯(cuò)截歉,Linux時(shí)間正常。整個(gè)人又炸毛了烟零。Win10的時(shí)間很有意思瘪松,和北京時(shí)間整整相差8小時(shí)。時(shí)區(qū)錯(cuò)了锨阿?沒錯(cuò)宵睦!但無論怎么調(diào)也沒反應(yīng)。于是只能網(wǎng)上查找一番墅诡,發(fā)現(xiàn)了兩個(gè)概念:
UTC即Universal Time Coordinated壳嚎,協(xié)調(diào)世界時(shí)
GMT 即Greenwich Mean Time,格林尼治平時(shí)
這兩個(gè)只是時(shí)間的不同的計(jì)量方式末早,格林尼治時(shí)間是格林尼治天文臺(tái)通過每天觀測(cè)太陽經(jīng)過本初子午線的的瞬間來制定時(shí)間烟馅,由于地球自轉(zhuǎn)速度是不均勻的而且逐漸變慢,所以這種計(jì)量方式是不準(zhǔn)確的然磷,網(wǎng)絡(luò)時(shí)間協(xié)議
使用的就是UTC時(shí)間郑趁。 協(xié)調(diào)世界時(shí)是由國(guó)際計(jì)量大會(huì)頒布的,使用原子鐘
計(jì)時(shí)姿搜,誤差極低寡润。
windows和linux缺省看待系統(tǒng)時(shí)間的方式是不一樣的。
windows以系統(tǒng)硬件時(shí)間為準(zhǔn)舅柜,即操作系統(tǒng)顯示的時(shí)間梭纹。
而linux是把系統(tǒng)硬件時(shí)間當(dāng)成了UTC時(shí)間
,系統(tǒng)顯示的時(shí)間是在硬件時(shí)間上+8业踢,即東八區(qū)的時(shí)間栗柒。
但我這種情況出現(xiàn)的原因是什么呢?個(gè)人猜想可能是打開linux時(shí)啟動(dòng)了自動(dòng)對(duì)時(shí)知举,修改了時(shí)間瞬沦,然后打開Win10,但發(fā)現(xiàn)Win10的時(shí)間服務(wù)已經(jīng)停止雇锡,所以無法自動(dòng)對(duì)時(shí)逛钻,顯示為現(xiàn)在時(shí)間-8 。
解決方法很簡(jiǎn)單锰提,在windows中添加注冊(cè)表即可:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
坑(三)
最近在開發(fā)過程中有這么一個(gè)操作曙痘,就是通過一款JS插件獲取到了時(shí)間芳悲,然后以此為條件傳到數(shù)據(jù)庫中查詢,無論怎樣格式化或者變換都得不到正確的結(jié)果边坤,很是頭疼名扛。
一般操作系統(tǒng)和編程語言涉及到時(shí)間的格式化或者計(jì)算都是通過UNIX時(shí)間戳
來實(shí)現(xiàn)的。時(shí)間戳
即格林威治時(shí)間1970年01月01日00時(shí)00分00秒到現(xiàn)在的總秒數(shù)茧痒,由于當(dāng)時(shí)(甚至現(xiàn)在)計(jì)算機(jī)系統(tǒng)都是以32位為主肮韧,因此能用到的時(shí)間只有2^32秒,當(dāng)時(shí)間到達(dá)2038年1月19日3時(shí)14分08秒時(shí)旺订,數(shù)值位全部向前進(jìn)1弄企,導(dǎo)致符號(hào)位被置1,其余31位為0区拳。介時(shí)拘领,將出現(xiàn)時(shí)間回歸
的情況,系統(tǒng)時(shí)間變?yōu)?901年12月13日20時(shí)45分52秒樱调。為了應(yīng)對(duì)這個(gè)問題约素,將來我們的計(jì)算機(jī)都會(huì)使用64位來計(jì)時(shí),能用多久呢本涕?可以用到世界末日都不成問題业汰。
以上權(quán)當(dāng)小知識(shí)記下了伙窃。那么問題來了菩颖,為什么這里行不通呢?不都是時(shí)間戳么为障?查閱了資料才發(fā)現(xiàn)晦闰,JS獲取的時(shí)間戳是毫秒值……毫秒……值!多了三位數(shù)硬是眼瞎沒看出來鳍怨,無話可說啊呻右。
完結(jié)
時(shí)間這玩意在現(xiàn)在的電子設(shè)備中無處不在,稀疏平常鞋喇。在有的環(huán)境中声滥,時(shí)間的錯(cuò)誤可能會(huì)導(dǎo)致軟件故障,系統(tǒng)癱瘓侦香,甚至手機(jī)變磚塊落塑,好像蘋果手機(jī)上就有發(fā)生過。這讓我想起以前的手機(jī)罐韩,上個(gè)內(nèi)存卡電話卡還要拼手速憾赁,慢了就要重新設(shè)置時(shí)間,特別是諾基亞散吵,特別煩龙考。后來用上了智能手機(jī)蟆肆,這家伙可以和基站自動(dòng)對(duì)時(shí),非常方便晦款,再也不用拿著手機(jī)問別人現(xiàn)在幾點(diǎn)了炎功,但總感覺那200塊的手機(jī)上的時(shí)間走的比現(xiàn)在快多了,一轉(zhuǎn)眼已是深夜11點(diǎn)缓溅,明天醒來就是2016的最后一天亡问,閉上眼,感覺能看到毛娭
捧著一堆山寨手機(jī)的‘慈祥的笑容’肛宋,時(shí)間走的一直都很從容州藕,走快走慢的從來都不是時(shí)間,而是不想服從時(shí)光腳步的壞家伙酝陈,總有那么一點(diǎn)幻想床玻,總有那么一點(diǎn)野心,在腦海沉帮、在深夜锈死、在夢(mèng)中、回蕩……回蕩……
》》》》》》》》》》 2016-12-30 23:00:32《《《《《《《