2013-10-30 61 views
0

我在我的java程序中遇到問題。Java CurrenTimeMilis不匹配

我使用時間戳在數據庫上執行查詢,但我得到錯誤的時間戳。

在我的虛擬機,我的日期設置爲太平洋時間:

date 

Wed Oct 30 09:50:43 PDT 2013 

timedatectl status 

    Local time: Wed 2013-10-30 09:52:30 PDT 
Universal time: Wed 2013-10-30 16:52:30 UTC 
    Timezone: US/Pacific (PDT, -0700) 
NTP enabled: yes 
NTP synchronized: no 
RTC in local TZ: no 
    DST active: yes 
Last DST change: DST began at 
       Sun 2013-03-10 01:59:59 PST 
       Sun 2013-03-10 03:00:00 PDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
       Sun 2013-11-03 01:59:59 PDT 
       Sun 2013-11-03 01:00:00 PST 

但是當我的程序做system.getCurrentMilis()時將返回以下時間戳:

2013-10-30 11:47:16.884 

我不確定爲什麼會出現這種情況。如果有人可以告訴我什麼是錯的,或者我可以檢查那將是真棒

謝謝!

編輯:

//- Get maximum timestamp from previous query 
Timestamp maxTimestamp = (new Timestamp(System.currentTimeMillis()) ; 


//- Compute query parameters (see notes above) 
Timestamp lowerLimit = new Timestamp(maxTimestamp.getTime() - 500) ; 
System.out.println("lowerLimit=" + lowerLimit) ; 
Timestamp upperLimit = new Timestamp(System.currentTimeMillis()); 
System.out.println("upperLimit=" + upperLimit) ; 
+5

['.getCurrentTimeMillis()'](http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#currentTimeMillis())不會返回'String'它返回一個'long',無論你將'long'轉換成'String'是否使用'TimeZone',可能是默認值。顯示該代碼。你默認的'TimeZone'設置爲? –

+0

在某些編輯中添加。但我不把它切換到一個字符串,我只是打印出時間戳 – Dan

回答

0

system.getCurrentMilis()給出了從1970年在GMT開始時的很長的代表量毫秒。當你把它解析成一個字符串時,你最有可能通過Timezone和夏令時來調整它。