2010-11-24 4 views
2

인사말 모든 i는 스프링 프레임 워크 를 사용하여 J2EE 응용 프로그램을 가지고 온라인 서버 (CentOS는 운영체제)를 디버깅하는 동안 new Date(); 객체 의 값을 인쇄하여 응용 프로그램에 날짜를 얻으려고 할 때 그것은 GMT-에서 시간을 검색 6 비록 터미널 명령 날짜를 통해 서버 시간을 얻으면 GMT 시간, 실시간으로 검색됩니다. 그래서 GMT-6은 어디에서 왔는지 궁금합니다. 왜 그런 이상한 behaver가 발생합니까?CentOS OS에서 Java로 날짜를 가져 오는 것이 올바르지 않습니까?

답변

0

문제는 Apache, tomcat ...을 다시 시작한 후에 해결되지만 여전히 그러한 동작이 발생하는 이유는 알 수 없습니다.

+0

응용 프로그램의 코드가 기본 JVM 전체 시간대를 변경하지 않는지 확인하십시오. –

+0

당신은 그 방법을 어떻게 생각하는지 말해 줄 수 있습니까? –

0

응용 프로그램의 어딘가에 기본 시간대가 TimeZone.setDefault(..)으로 변경 되었습니까?

+0

전체 앱을 검색했지만 기본값으로 시간대를 설정하지 않았습니다. –

1

로케일 문제와 비슷합니다. 더 구체적으로 말하면, 그것은 문제가 아니며, 자바의 다른 시간대/지역 설정을 처리하는 방법 일뿐입니다.

this article에서 코드를 사용 : 자바 환경을 해석하는 방법을

Properties p = System.getProperties(); 
Enumeration keys = p.keys(); 
while (keys.hasMoreElements()) { 
    String key = (String)keys.nextElement(); 
    String value = (String)p.get(key); 
    System.out.println(key + ": " + value); 
} 

당신이 볼 수 있습니다.

CentOS의 시간대/지역 설정을 변경하면 Java가 해당 변경 사항을 선택하고 그에 따라 시간을 표시해야합니다.

하지만 과체중처럼 들리며 로케일을 기준으로 customizing date format이 필요한 것일 수 있습니다.

다른 응용 프로그램은 같은 날짜를 다르게 출력 할 수 있습니다.

+0

내 위의 대답을 참조하십시오. 그리고 당신은 무엇을 생각합니까? –

+0

@ sword101 : 출력 된 GMT-6 시간은 맞습니까? 다시 시작하면 다시 발생합니까? 그렇다면 언제? 디버거가 무엇입니까? – darioo

+0

예 GMT-6에서 시간이 맞습니다. 다시 시작한 후에 다시 발생하지만 여기에 패턴이 표시되지 않고 log4j로 디버깅 중입니다 ... –

관련 문제