Tomcat 응용 프로그램을 실행 중이며 시간 값을 표시해야합니다. 불행히도 시간이 한 시간 남았습니다. 내 기본 시간대가 다음과 같이 설정되어 있음을 확인하고 기본 시간대가 다음과 같이 설정되었음을 발견했습니다.Java 표준 시간대가 엉망입니다
sun.util.calendar.ZoneInfo[id="GMT-08:00",
offset=-28800000,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
태평양 표준시 시간대가 아닌. 기본 시간대의 display name을 인쇄하려고하면 "GMT-08 : 00"으로 표시되며 이는 미국 태평양 표준 시간대로 올바르게 설정되지 않았 음을 나타냅니다. 나는 Gutsy Gibbon에서 업그레이드 된 Ubuntu Hardy Heron에서 실행 중입니다.
JRE가 모든 관련 일광 절약 시간 정보와 함께 Pacific을 사용하도록 알려주도록 업데이트 할 수있는 구성 파일이 있습니까? 내 컴퓨터의 시간이 올바르게 표시되므로 OS 전반의 잘못된 구성으로 보이지 않습니다.
좋습니다. 다음은 업데이트입니다. 동료는 "/Duser.timezone = US/Pacific"을 포함하도록/etc/profile 파일에서 JAVA_OPTS를 업데이트 할 것을 제안했습니다 (나는 또한 업데이트 된 CATALINA_OPTS도 보았습니다). 실제로, 나는 새로운/etc/profile을 사용하지 않고 변경 사항을 변수에 내 보냈다. (재부팅은 나중에 변경 사항을 고를 것이고 나는 황금색이 될 것이다).
그러나 여전히 더 나은 솔루션이 있다고 생각합니다. Java 용 구성이 있어야합니다. 즉, 사용하는 표준 시간대 또는 표준 시간대를 지정하는 방법을 지정해야합니다. 누군가가 그러한 설정을 알고 있다면 그것은 대단 할 것이지만 지금은 괜찮은 해결 방법입니다.
나는 1.5를 사용하고 있으며, 확실히 DST 문제입니다. 보시다시피, 표준 시간대는 일광 절약 시간제를 사용하지 않도록 설정됩니다. 내 생각에 일반적으로 특정 태평양 표준 시간대보다는 -8 오프셋으로 설정됩니다. 제네릭 -8 오프셋에는 일광 절약 시간 정보가 없으므로 물론 사용하지는 않지만 Java 시작시 태평양 표준 시간대를 사용하도록 Java에 지시해야합니까? 프로그래밍 방식의 솔루션을 찾고있는 것이 아니라 구성 솔루션이어야합니다.
+1 : 방금 업데이트 된 우분투 9.10 서버에서이 문제를 만났습니다. Sun JDK 1.6.0_15-b03, 시스템은 미국/동부 표준시의 설치 시간에 구성됩니다./etc/localtime은/usr/share/zoneinfo/US/Eastern과 동일한 내용을 포함합니다. Java는 2010 년 3 월 15 일에서 4 월 25 일 사이의 날짜에 대한 잘못된 결과를 생성합니다./usr/share/zoneinfo/US/Eastern에 대한 심볼릭 링크로 파일을 바꾼 후에 이제 올바른 결과를 얻습니다. 나는이 버그가 a) 여전히 열려있다. b) 완전히 업데이트 된 우분투 서버 (9.10 - Karmic)에 영향을 준다. –
버그는 Java 버전 7 (b72)에서 닫힌 것으로 기록됩니다. – Raedwald
/etc/localtime을 symlink로 변경합니다. 좀 더 현대적인 리눅스 시스템에서 (예를 들어, 패키지가 업그레이드 될 때 또는 시작시에 - 필자는 심볼릭 링크에서 파일 사본으로 변경하는 이유가 시동 시퀀싱 및 종속성과 관련이있을 것이라고 생각할 수있다. 특히/usr /이 다른 파일 시스템에있는 경우) TZ 환경 변수를 설정하는 것이 더 유용하다는 것을 알았습니다. –