今天遇到了一個比較有意思的問題,從服務器上封裝好的java.sql.timestamp對象返回到本地客戶端程序后與數據庫中的時間相差了整整14個小時。因為跟客戶的時差是14個小時,所以大體懷疑是時差問題。
所以計劃在客戶端程序執行之前首先設置默認的TimeZone:
1
|
timezone,TimeZone.setDefault(TimeZone); |
但是我服務器上的TimeZone是什么呢?于是我寫了個程序來看看服務器的默認TimeZone:
1
2
3
4
5
6
7
|
import java.util.TimeZone; public class TestTimeStamp { public static void main(String[] args) { TimeZone timeZone=TimeZone.getDefault(); System.out.println(timeZone.getID()); } } |
假設輸出是: kk,
這樣我就獲得了服務器上的默認TimeZone:kk,然后所需要做的就是把在客戶端程序執行前設置客戶端程序的TimeZone:
1
|
timezone,TimeZone.setDefault(TimeZone.getTimeZone( "kk" )); |
然后取得的時間如果打印出來就跟服務器一致了,當然你要是如果還是按照java.sql.TimeStamp的類型返回服務器的話,時間還是原來的時間。
另外如果遠程服務器封裝對象的時候如果直接使用String,我想就不會有這種問題了。
以上所述是小編給大家介紹的java timezone 類常見問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!