>  기사  >  Java  >  Java 코드가 날짜와 시간을 CST로 잘못 변환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Java 코드가 날짜와 시간을 CST로 잘못 변환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 22:09:29489검색

Why is my Java code converting date and time to CST incorrectly, and how can I fix it?

Java에서 날짜와 시간을 특정 시간대로 변환

이 Java 프로그램은 현재 시스템 날짜와 시간을 특정 시간대로 변환하는 것을 목표로 합니다. . 그러나 제공된 코드는 인도에서 중부 표준시(CST)로 변환할 때 시간 불일치를 표시하는 잘못된 결과를 생성합니다.

시간대 변환 이해

시간대는 지역입니다. 동일한 표준 시간을 사용합니다. 다른 시간대의 등가 시간을 계산할 때는 시간대 오프셋과 일광 절약 시간(DST) 설정의 차이를 조정해야 합니다.

코드 분석

코드는 SimpleDateFormat 및 Calendar 클래스를 사용하여 날짜 및 시간 값을 조작합니다. 다음 단계를 사용하여 현재 시스템 시간을 CST로 변환하려고 시도합니다.

  1. 달력을 사용하여 현재 날짜와 시간을 검색합니다.
  2. SimpleDateFormat을 사용하여 날짜와 시간을 문자열로 구문 분석합니다.
  3. TimeZone을 사용하여 CST 시간대를 구하고 이를 SimpleDateFormat 객체의 시간대로 설정합니다.
  4. CST 시간대를 사용하여 날짜 및 시간 문자열을 구문 분석합니다.
  5. 변환된 날짜를 인쇄합니다.

불일치 해결

코드가 시간대 오프셋 및 DST 설정에 맞게 제대로 조정되지 않아 불일치가 발생합니다. 제공된 코드는 원시 시간대 오프셋만 조정하지만 DST는 고려하지 않습니다.

해결책

이 문제를 해결하려면 코드가 원시 시간대 오프셋과 두 가지 모두에 대해 조정해야 합니다. 오프셋 및 DST 절약. 다음 수정된 코드는 조정 내용을 보여줍니다.

<code class="java">Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Adjust for raw time zone offset
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);

// Adjust for daylight saving time
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

// Adjust to target time zone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}

System.out.println(calendar.getTime());</code>

이러한 조정을 추가하면 코드는 DST 조정을 포함하여 날짜와 시간을 지정된 시간대로 정확하게 변환합니다.

위 내용은 Java 코드가 날짜와 시간을 CST로 잘못 변환하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.