2011-09-20 48 views
0

我試圖讓本地時區(即格林威治標準時間-7,但它顯示GMT)調整的epoc時間。我相當肯定這應該工作,但它不是...Java(處理環境)將不會爲我提供當地時間

Calendar localTime = new GregorianCalendar(TimeZone.getDefault()); 
Date dd = localTime.getTime(); 
long t = dd.getTime()/1000; 
System.out.printf("%d\n",t); 

但它仍然將基於GMT,不GMT-7(我的時區)的EPOC時間。玩了一段時間我沒有得到這個工作...

Date ddd = new Date(); 
long t = ddd.getTime() + TimeZone.getDefault().getOffset(ddd.getTime()); 
t = t/1000; 

但爲什麼不是第一個塊的工作之後?

回答

0

A Date對象簡單地包裝自紀元以來以毫秒爲單位的UTC時間。這就是所有時間都在Java中表現的「底層」。這也使得它與工作一致。每當你想打印出來的東西時,應用TimeZone偏移量和DST偏移量。

這就是爲什麼SimpleDateFormat類接受TimeZone類,但Date類沒有TimeZone設置器。

強制性的:我聽說Joda Time是一個更容易使用的datetime API。

另外,看看this post關於Java中的標準日期和時間庫。

相關問題