|
你還記得“軟件真的好難做”中的那個有意思的例子嗎?那個例子告訴我們軟件開發(fā)中假設可能會是致命的事。今天,我又在StackOverflow上看到一個關于時間的問題——為什么1927年12月31日的午夜時間這么奇怪?提問題的這個人給了下面的一段java代碼(我做一些修改,保證讓你可以copy過去就可以編譯運行) 我在其中高亮了幾行,這個程序就是想比較一下“1927-12-31 23:54:07” 和 “1927-12-31 23:54:08” 差幾秒,很明顯,是差一秒。但是程序的輸出卻不是這樣的。
下面,讓我們來看看程序的輸出:(是的,差出353秒鐘來)
Stackoverflow真的很強大,在大家要求發(fā)問者給出時區(qū)(中國上海)的15分鐘內(nèi)就解決了這個問題。相當?shù)牧钊梭@嘆。原因是什么呢?大家需要圍觀一下這個網(wǎng)頁。(為了怕被墻或是被和諧,我已習慣了抓屏保存,如果有人能開發(fā)一個軟件能隨看隨抓,然后如果源被刪了可以P2P的從已下載了的人那里獲取,那么這個軟件應該會很有國內(nèi)市場。蛋扯遠了,Sorry)
從上圖中我們可以看到—— 在1927年12月31日23:59:59時,往后面的一秒應該是1928年1月1日 0:0:0,但是這個時間被往后調(diào)整了5分52秒,而成了,1927年12月31日的,23:54:08,于是,完成了352秒的穿越。于是我們的Java程序出了這樣的一個問題,這真是一個奇跡。 為什么會有這個調(diào)整呢?我居然Google不到,不過,我在這個上查看了一下北京的時間,發(fā)現(xiàn)北京的時間只到1970年,于是我猜想,中國近代歷史亂七八糟的政權交替可能是這個原因。于是我看 了一下北京和上海物理時差,果然,北京上海的時差在5分50秒左右。因此,我覺得這個時間的變化應該是從上海時間變成了北京時間。至于你信不信,反正我是信了。 從這個事,我得到下面的一些啟示:
各位無證程序員們,看到這個例子,你們是不是感到編程的壓力了?呵呵。
|
|
|
來自: CevenCheng > 《被忽略的細節(jié)》