2014-02-28 20 views
-2

這是一個重複的而不是重複的!

只是請幫助我,不要把我引到其他任何地方,因爲我真的無法得到格林威治標準時間。 答案看起來很簡單,但對我無效。 我不知道所有的問題都是網絡錯誤,還是我犯了一個錯誤?GMT在java中,簡單但不起作用

請看一看這個片段,結果:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
long time = cal.getTimeInMillis(); 
Date date = new Date(time); 
System.out.println(date); 

time = System.currentTimeMillis(); 
date = new Date(time); 
System.out.println("--\n" + date); 

結果:

週五2月28日16時07分12秒GMT + 03:30 2014
-
週五2月28日16:07:12 GMT + 03:30 2014

兩者都顯示當地時間。我甚至直接打印了時間,因爲我認爲這可能是由於Date類造成的,但即使這些也是相同的(僅有1或2毫秒的差異)。它使用SimpleDateFormat做的

+0

可能重複[我怎樣才能在UTC或GMT Java中的當前日期和時間?(HTTP:/ /stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in-utc-or-gmt-in-java) –

回答

2

使用setTimeZone()SimpleDateFormat打印日期在特定的時區。

DateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss z"); 

Date d = format.parse("28-Feb-2014 13:00:00 PST"); 
System.out.println(format.format(d)); 

format.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(format.format(d)); 

打印:

28-Feb-2014 13:00:00 PST 
28-Feb-2014 21:00:00 GMT 
+0

謝謝,我可以通過日曆#getTimeInMillis存儲以毫秒爲單位的時間,只需在檢索時使用您的指示? – mok

+1

是的,存儲毫秒值,當你格式化它的顯示時,設置你想要顯示它的時區。 –

1

的一種方式和方法setTimeZone():

SimpleDateFormat sdf = new SimpleDateFormat("..."); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // or UTC 
System.out.println(sdf.format(date)); 

乾杯,

+0

請您填寫您的答案,以便我可以測試它。 – mok

+1

你應該可以閱讀SimpleDateFormat的Javadoc並從那裏開始工作... –

+0

哎呀。謝謝,但似乎aetheria沒有賬單! – mok

0

試試下面

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); 
f.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(f.format(new Date(System.currentTimeMillis()))); 
+1

你是否已經添加了相同的答案已經:-) –

+0

應該使用刷新按鈕我猜... –