2012-09-27 3 views
0

다음 코드는 Unix 서버 (WAS 5.1)에서 실행되며 회사의 테스트 환경입니다. 나는 아래의 코드를 실행하려고하면 (오늘 2012년 9월 27일 실행이 2012년 9월 26일로 날짜를 반환하는 경우 예)date.gettime()이 Java에서 오늘 날짜가 아닌 Previous Date를 항상 반환하는 이유는 무엇입니까?

long userSelectedTimeLong = date.getTime() 
+3

서버 TimeZone을 확인하십시오. –

+0

'System.out.println (새 날짜 (새 날짜(). getTime())); 오늘 날을 나로 인쇄합니다 ... – sp00m

+0

그 코드를 사용하면 밀리 초가 "1348717971579"로 표시되고 실제 날짜로 변환했습니다. "수요일, 9 월 26 일 수요일 11:52:51 EDT" –

답변

1

날짜의 TimeZone에 따라 시간을 반환, 난 항상 어제 날짜를 얻을 수 기계. 당신의 서버가 다른 곳과 TimeZone 값이 다른 곳에 호스팅 될 수도 있습니다. 동일한 TimeZone을 사용하여 날짜 값을 비교해야합니다.

일단 다음 작업을 수행하면 date 변수에 실제로 현재 날짜가 포함됩니다. new Date().getTime()

+0

및 시간대 정보로 작업하는 경우 [Calendar] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html)를 사용하십시오. – basiljames

0

한 번 비슷한 문제가 발생했습니다. 응용 프로그램이 실행되는 동안 응용 프로그램이 실행되고 리프레시되지 않을 때 로컬 날짜 변수가 인스턴스화되는지 확인하십시오.

0

이 잘 사용하는 것 long userSelectedTimeLong = Calendar.getInstance().getTimeInMillis()

0

또 다른 가능성 : 시간 서비스의 어떤 종류의 서버 동기는 무엇입니까? (ntp, ...) 유닉스 시스템의 시스템 날짜가 잘못 설정된 것일 수도 있습니다.

관련 문제