2013-01-20 14 views
1

我試圖在Java和參考this得到 「timezoneoffset的」,我實現了這一點:獲取的timezoneoffset - Java的

long unix_time_at_midnight; 
DateFormat dateFormat= new SimpleDateFormat("MM/dd/yyyy"); 
Date d = new Date((unix_time*1000)/1000); 
String d1 = dateFormat.format(d); 
unix_time_at_midnight = Long.parseLong(d1); 
int m=TimeZone.getOffset(unix_time_at_midnight) ; 

我得到「的方法的getOffset(INT,INT,INT,INT,INT ,int)在類型TimeZone中不適用於參數(long)「。誰能指導?

+0

根據什麼參考是什麼呢? –

+0

您使用的是哪個版本的JDK? –

+0

用鏈接編輯我的問題。我使用BlackBerry Plugin在Eclipse中工作。我無法獲得TimeZoneOffset; UTC和當地時間之間的差異。 – Sarah

回答

1

方法Timezone.getOffset(int era, int year, int month, int day, int dayOfWeek, int milliseconds);是一個抽象類,必須從實現的Timezone子類中引用它。

您試圖靜態訪問非靜態方法,並且編譯器將其與抽象方法進行匹配。

你正在尋找的解決方案是:

int m=TimeZone.getDefault().getOffset(unix_time_at_midnight) ; 

編輯:在BlackBerry API看好TimeZone,我看有沒有getOffset(long date)的方法,但getOffset(int era, int year, int month, int day, int dayOfWeek, int millis)

一個可能的解決方案可能是:

Date d = new Date((unix_time*1000)/1000) 
TimeZone tz = TimeZone.getDefault(); 
Calendar c = Calendar.getInstance(tz); 
c.setTime(d); 
int m = tz.getOffset(1, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.DAY_OF_WEEK), c.get(Calendar.MILLISECOND)); 
+0

我仍然收到上面引用的錯誤消息,因爲getOffset不接受長整型值。 – Sarah

+0

更新了我的帖子以適應RIM BlackBerry API。 –