결함이 하드웨어 또는 OS
합니다. 같은 다른 사이트에 대한 도움말을 찾습니다
자바 날짜 - 시간 당신을 오해 할 수
인식을 있습니까 java.util의에
toString
방법이. Date와 .Calendar는 JVM의 현재 기본 시간대를 적용합니까? 실제로 날짜가없는 경우 날짜/시간 객체에 시간대가 생기는 것처럼 보입니다. 그리고이 행동은 상황에 따라 혼란 스러울 수도 있습니다.
JVM에는 운영 체제와 다를 수있는 자체 기본 표준 시간대가 있습니다. 자세한 내용은 아래를 참조하십시오.
Java가 아닌 OS 유틸리티를 사용하여 현재 날짜 시간 및 시간대/지역 설정을 확인하십시오. 하드웨어와 OS가 확실하다면 Java에 집중하십시오. 현재 날짜 시간이 당신의 OS에 정확하지만 OS가 원하지 않는 시간대로 설정되어있는 경우
은 또한 시간대를
을 원하는 지정, 당신은 당신의 자바 코드에서 해당 처리 할 수 있습니다.
실제로 암시 적 기본값을 사용하지 않고 원하는/예상 시간대를 지정하는 방식으로 Java 코드를 작성해야합니다. 귀하의 경우가 그렇듯이 호스트 운영 체제가 올바른 시간대로 설정되어 있다는 것을 항상 신뢰할 수있는 것은 아닙니다. 그러면 JVM의 기본 시간대에이를 알립니다. 또한 Java 코드는 JVM의 현재 기본 시간을 변경할 수 있습니다.이 시간은 해당 JVM에서 실행되는 모든 스레드의 모든 코드에 영향을줍니다. 따라서 이는 기본적으로 의존하지 않고 시간대를 지정하는 또 다른 이유입니다.
Joda 타임은 괜찮은 날짜 - 시간 라이브러리를 사용합니다 코드에서 시간대를 지정합니다. 이는 Joda-Time 또는 Java 8의 새로운 java.time package을 의미합니다. java.util.Date 및 .Calendar 클래스는 피할 수 없으므로 사용하지 마십시오.
Joda-Time과 java.time에서 날짜 시간 클래스는 자체 지정된 시간대를 알고 있습니다. 이것은 지정된 시간대가없는 java.util.Date와는 대조적입니다.다른 시간대로 쉽게 조정할 수 있습니다.
Joda-Time과 java.time은 모두 immutable objects을 사용합니다. 여기서 객체의 값을 수정 ("변경")하지 않고 원래 객체의 속성을 기반으로 새 인스턴스를 만듭니다. 여기에는 thread-safety이 내장되어 있습니다.
// Three date-time objects, but all represent the same simultaneous moment in the timeline of the Universe.
DateTime nowUtc = DateTime.now(DateTimeZone.UTC);
DateTime nowParis = nowUtc.withZone(DateTimeZone.forID("Europe/Paris"));
DateTime nowKolkata = nowUtc.withZone(DateTimeZone.forID("Asia/Kolkata"));
[Unix 및 Linux] (http://unix.stackexchange.com) 또는 [ServerFault] (http://serverfault.com)의 StackExchange 사이트에 대한 질문과 같습니다. StackOverflow.com 사이트는 프로그래밍 관련 질문 용입니다. OS 또는 기계에 잘못된 시계 설정이있는 경우 프로그래밍의 양이 절약됩니다. –