小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

你確信你了解時間嗎?

 CevenCheng 2011-08-25

你還記得“軟件真的好難做”中的那個有意思的例子嗎?那個例子告訴我們軟件開發(fā)中假設可能會是致命的事。今天,我又在StackOverflow上看到一個關于時間的問題——為什么1927年12月31日的午夜時間這么奇怪?提問題的這個人給了下面的一段java代碼(我做一些修改,保證讓你可以copy過去就可以編譯運行)

我在其中高亮了幾行,這個程序就是想比較一下“1927-12-31 23:54:07”  和  “1927-12-31 23:54:08” 差幾秒,很明顯,是差一秒。但是程序的輸出卻不是這樣的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.TimeZone; 
class time{
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sf.setTimeZone(TimeZone.getTimeZone("Asia/shanghai"));
        String str3 = "1927-12-31 23:54:07";
        String str4 = "1927-12-31 23:54:08";
        Date sDt3 = sf.parse(str3);
        Date sDt4 = sf.parse(str4);
        long ld3 = sDt3.getTime() /1000;
        long ld4 = sDt4.getTime() /1000;
        System.out.println(ld3);
        System.out.println(ld4);
        System.out.println(ld4-ld3);
    }
}

下面,讓我們來看看程序的輸出:(是的,差出353秒鐘來)

-1325491905
-1325491552
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秒左右。因此,我覺得這個時間的變化應該是從上海時間變成了北京時間。至于你信不信,反正我是信了。

從這個事,我得到下面的一些啟示:

  1. Java在的時區(qū)實現(xiàn)相當?shù)膹姶蟀?。這種細節(jié)都能考慮到。
  2. 本地時間的完全就是一鍋,應該盡量不用。
  3. 如果你要開發(fā)和時區(qū)有關系的程序,你的系統(tǒng)里一定要使用GMT標準時間,僅在顯示的時候才轉(zhuǎn)成本地時間。
各位無證程序員們,看到這個例子,你們是不是感到編程的壓力了?呵呵。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多