Java本地時間與GMT時間的轉換
格林尼治標準時間(GMT)
由來
由於地球軌道並非圓形,其執行速度又隨著地球與太陽之間的距離改變而出現變化,因此視太陽時欠缺均勻性。視太陽日的長度同時亦受到地球自轉軸相對軌道面的傾斜度所影響。為了要糾正上述的不均勻性,天文學家計算出地球非圓形軌跡與極軸傾斜對視太陽時的效應。平太陽時就是指經修訂後的視太陽時。在格林尼治子午線上的平太陽時稱為世界時(UT0),又叫格林尼治平時(GMT)。
北京時間與GMT時間關係
GMT是中央時區,北京在東8區,相差8個小時 所以北京時間=GMT時間+八小時 Greenwich mean time 【天】格林尼治標準時間
格林尼治標準時間是指位於倫敦郊區的皇家格林尼治天文臺的標準時間,因為本初子午線被定義在通過那裡的經線。 理論上來說,格林尼治標準時間的正午是指當太陽橫穿格林尼治子午線時的時間。由於地球在它的橢圓軌道里的運動速度不均勻,這個時刻可能和實際的太陽時相差16分鐘。 地球每天的自轉是有些不規則的,而且正在緩慢減速。所以,格林尼治時間已經不再被作為標準時間使用。現在的標準時間——協調世界時(UTC)——由原子鐘提供。 自1924年2月5日開始,格林尼治天文臺每隔一小時會向全世界發放調時資訊。
這裡以一個例子來說明如何轉換為GMT時間。在HTTP 頭上使用了GMT時間,如果要設定Last-Modified 引數,如何構造該時間格式呢? 要點如下:
1、可以使用
SimpleDateFormat
EEE-三位星期
d-天
MMM-月
yyyy-四位年
HH-24小時制訊息
mm-分鐘
ss-秒
‘GMT’-GMT字串,別忘了加上單引號
通過該掩碼,能完美的構造出HTTP頭所需的日期格式。
2、檔案修改時間是本地時間,如果要對檔案時間進行換算,換成GMT時間,則要加上時區的設定,
[java] view plain copy
sdf.setTimeZone (TimeZone.getTimeZone("GMT"));
例如:
例如型別為 “Wed Apr 11 16:18:42 +0800 2012”;
則對應掩碼為 “EEE MMM dd HH:mm:ss z yyyy”;
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss Z yyyy", new Locale("ENGLISH", "CHINA"));
或者
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss Z yyyy" , Locale.US);
例如型別為 “Thu, 15 Sep 2011 12:13:41 GMT “;
則對應掩碼為 “EEE, d MMM yyyy HH:mm:ss ‘GMT’”;
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US);