java GMT 日期轉換
阿新 • • 發佈:2019-01-06
格林尼治標準時間(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時間,則要加上時區的設定,
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
程式碼
String sFile = "c:\\test.jpg"; File file = new File(sFile); if(file.exists()){ long lm = file.lastModified(); Calendar cd = Calendar.getInstance(); cd.setTimeInMillis(lm); SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); String timeStr = sdf.format(cd.getTime()); String timeStr = sdf.format(cd.getTime()); log.debug("lastModify=" + timeStr); } //...
3、設定Locale.US, 是因為根據機器的本地化設定,輸出的是中文,這裡只想輸出英文, SimpleDateFormat建構函式如下:
SimpleDateFormat(String pattern, Locale locale)
輸出結果:
lastModify=Thu, 15 Sep 2011 12:13:41 GMT