1、犯過的一個錯:long java.util.Date.getTime()
Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
Returns:
the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date.
註意,這裡返回的微秒,曾經在我的一個項目中,使用時間的精度是秒,結果比對的時候,總是不對,後來才發現,set時,傳的是微秒級別的數據,get的時候返回的是秒級別的。
2、關於時區的說明:
全球24個時區的劃分
相較於兩地時間表,可以顯示世界各時區時間和地名的世界時區表(World Time),就顯得精密與復雜多瞭,通常世界時區表的表盤上會標示著全球24個時區的城市名稱,但究竟這24個時區是如何產生的?過去世界各地原本各自訂定當地時間,但隨著交通和電訊的發達,各地交流日益頻繁,不同的地方時間,造成許多困擾,於是在西元1884年的國際會議上制定瞭全球性的標準時,明定以英國倫敦格林威治這個地方為零度經線的起點(亦稱為本初子午線),並以地球由西向東每24小時自轉一周360°,訂定每隔經度15°,時差1小時。而每15°的經線則稱為該時區的中央經線,將全球劃分為24個時區,其中包含23個整時區及180°經線左右兩側的2個半時區。就全球的時間來看,東經的時間比西經要早,也就是如果格林威治時間是中午12時,則中央經線15°E的時區為下午1時,中央經線30°E時區的時間為下午2時;反之,中央經線15°W的時區時間為上午11時,中央經線30°W時區的時間為上午10時。以臺灣為例,臺灣位於東經121°,換算後與格林威治就有8小時的時差。如果兩人同時從格林威治的0°各往東、西方前進,當他們在經線180°時,就會相差24小時,所以經線180°被定為國際換日線,由西向東通過此線時日期要減去一日,反之,若由東向西則要增加一日。
格林威治標準時間GMT
十七世紀,格林威治皇傢天文臺為瞭海上霸權的擴張計畫而進行天體觀測。1675年舊皇傢觀測所(Old Royal Observatory) 正式成立,到瞭1884年決定以通過格林威治的子午線作為劃分地球東西兩半球的經度零度。觀測所門口墻上有一個標志24小時的時鐘,顯示當下的時間,對全球而言,這裡所設定的時間是世界時間參考點,全球都以格林威治的時間作為標準來設定時間,這就是我們耳熟能詳的「格林威治標準時間」(Greenwich Mean Time,簡稱G.M.T.)的由來,標示在手表上,則代表此表具有兩地時間功能,也就是同時可以顯示原居地和另一個國度的時間。
世界協調時間UTC
多數的兩地時間表都以GMT來表示,但也有些兩地時間表上看不到GMT字樣,出現的反而是UTC這3個英文字母,究竟何謂UTC?事實上,UTC指的是Coordinated Universal Time- 世界協調時間(又稱世界標準時間、世界統一時間),是經過平均太陽時(以格林威治時間GMT為準)、地軸運動修正後的新時標以及以「秒」為單位的國際原子時所綜合精算而成的時間,計算過程相當嚴謹精密,因此若以「世界標準時間」的角度來說,UTC比GMT來得更加精準。其誤差值必須保持在0.9秒以內,若大於0.9秒則由位於巴黎的國際地球自轉事務中央局發佈閏秒,使UTC與地球自轉周期一致。所以基本上UTC的本質強調的是比GMT更為精確的世界時間標準,不過對於現行表款來說,GMT與UTC的功能與精確度是沒有差別的。
夏日節約時間DST
所謂「夏日節約時間」Daylight Saving Time(簡稱D.S.T.),是指在夏天太陽升起的比較早時,將時鐘撥快一小時,以提早日光的使用,在英國則稱為夏令時間(Summer Time)。這個構想於1784年由美國班傑明·富蘭克林提出來,1915年德國成為第一個正式實施夏令日光節約時間的國傢,以削減燈光照明和耗電開支。自此以後,全球以歐洲和北美為主的約70個國傢都引用這個做法。目前被劃分成兩個時區的印度也正在商討是否全國該統一實行夏令日光節約時間。歐洲手機上也有很多GSM系統的基地臺,除瞭會傳送當地時間外也包括夏令日光節約時間,做為手機的時間標準,使用者可以自行決定要開啟或關閉。值得註意的是,某些國傢有實施「夏日節約時間」的制度,出國時別忘瞭跟隨當地習慣在表上調整一下,這可是機械表沒有的功能設計哦!
CST時間
CST卻同時可以代表如下 4 個不同的時區:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00
可見,CST可以同時表示美國,澳大利亞,中國,古巴四個國傢的標準時間。
3、時間的轉換,自己嘗試一下就知道瞭:
String strDateFormat = “yyyy/MM/dd HH:mm:ss Z”;
DateFormat test = new SimpleDateFormat(strDateFormat, Locale.US);
System.out.println((test.parse(“2012/05/07 15:07:10 +0800”)));
System.out.println((test.parse(“2012/05/07 15:07:10 +0800”)).getTime());