2011-08-29 63 views
0

我有一個來自於我的應用程序中的時間戳值。用戶可以在任何給定的本地TimeZone中。如何系統的時區轉換成用戶的時區

此日期用於WebService和系統,無論用戶總是選擇服務器時區(置於美國)中的時區,我需要將參數從系統轉換爲用戶。 我嘗試這樣的做法:

/** 
    * Adapt calendar to client time zone. 
    * @param calendar - adapting calendar 
    * @param timeZone - client time zone 
    * @return adapt calendar to client time zone 
*/ 
public static Calendar convertCalendar(final Calendar calendar, 
             final TimeZone timeZone){ 
    Calendar ret = new GregorianCalendar(timeZone); 
    ret.setTimeInMillis(calendar.getTimeInMillis() + 
    timeZone.getOffset(calendar.getTimeInMillis()) - 
    TimeZone.getDefault().getOffset(calendar.getTimeInMillis())); 
    ret.getTime();  
    return ret; 
} 

有我的電腦上顯示的語法錯誤它說,該聲明「公共靜態日曆convertCalendar(掛曆,時區timeone)」有語法問題。

我使用JDK 1.3。我不知道我錯過了什麼。

誰能請提高我對這個概念的理解?

+0

添加**完整的編譯器錯誤說明**。 –

回答

1

其實,簡單地獲得具有相同的原始時間值,但在不同的時區日曆對象,它甚至比這更簡單。

Calendar ret = Calendar.getInstance(timeZone); 
ret.setTime(calendar.getTime()); 
return ret; 

但我不確定這將足以滿足您的需求。無論何時輸入或輸出該日曆(或其日期),標準Java API都會自動將該值轉換回當地時間。 JDBC語句(儘管這也可能取決於您的特定JDBC驅動程序),toString()等。例如,您可能需要在TimeZone中實際使用DateFormat,而不是設置Calendar的TimeZone。

如果你的Web服務引擎自動轉換傳入的「日期」類型字段日曆,你可以有一些選擇在那裏,特別是如果字段的類型是一個真正的日期格式,而不是一個普通的字符串。

很難說更不知道如何需要使用此TimeZone轉換日曆。