2013-10-30 3 views
0

내 Java 프로그램에 문제가 있습니다.Java CurrenTimeMilis가 일치하지 않습니다.

타임 스탬프를 사용하여 데이터베이스에서 쿼리를 수행하고 있지만 잘못된 타임 스탬프가 표시됩니다. 내 VM에

는, 나는 날짜는 태평양 시간으로 설정 한 : 또한

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())는 '문자열'을 반환하지 않습니다. 'long'을 리턴합니다.'long'을'String'으로 변환하기 위해 무엇을 하든지간에, 아마도'TimeZone'을 사용하고 있습니다. 그 코드를 보여주세요. 기본 'TimeZone'은 (으)로 설정되어 있습니까? –

+0

일부 수정되었습니다. 하지만 난 문자열로 전환하지 않는, 난 그냥 타임 스탬프를 인쇄 할 – Dan

답변

0

system.getCurrentMilis()는 GMT 1970의 시작부터 긴 나타내는 양의 MS를 제공합니다. 문자열로 파싱 할 때 표준 시간대 및 일광 절약 시간으로 조정할 가능성이 큽니다.

관련 문제