> Java > java지도 시간 > 본문

Java에서 모든 TimeZone의 타임스탬프를 GMT로 변환하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-12 08:19:02
원래의
502명이 탐색했습니다.

How to Convert a Timestamp From Any TimeZone to GMT in Java?

Java를 사용하여 달력 시간대를 처리하는 방법

질문:

다음의 타임스탬프가 있습니다. 모든 TimeZone에서 발생할 수 있는 애플리케이션. 그러나 데이터는 항상 GMT에 있다고 가정하는 WebService로 전송되어야 합니다. 사용자가 알지 못하는 사이에 사용자의 입력 시간을 현지 TimeZone에서 GMT로 변환해야 합니다.

답변:

Java의 TimeZone 처리는 혼란스러울 수 있습니다. 타임스탬프는 일반적으로 GMT로 저장되지만 Calendar 클래스는 기본적으로 시스템의 현재 TimeZone을 사용합니다. 이 문제를 해결하려면 다음을 고려하세요.

import java.util.Calendar;
import java.util.TimeZone;

public class ConvertTimeZone {

    public static void main(String[] args) {
        // Example input time (EST)
        Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST"));
        input.set(2008, Calendar.MAY, 1, 18, 12, 0);

        // Create a Calendar in GMT
        Calendar gmt = convertToGmt(input);

        // Output the converted time (GMT)
        System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT
    }

    public static Calendar convertToGmt(Calendar cal) {
        Date date = cal.getTime();
        TimeZone tz = cal.getTimeZone();

        long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT
        int offsetFromUTC = tz.getOffset(msFromEpochGmt);

        // Create a new Calendar in GMT and adjust for the offset
        Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        gmtCal.setTime(date);
        gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

        return gmtCal;
    }
}
로그인 후 복사

이 코드는 다음 단계를 수행합니다.

  1. 사용자의 로컬 TimeZone에서 현재 시간을 Calendar 개체로 가져옵니다.
  2. GMT로 새 Calendar 개체를 생성합니다.
  3. 사용자의 로컬 TimeZone과 GMT 사이의 오프셋을 계산합니다.
  4. 사용자 시간에 오프셋을 추가하여 GMT Calendar를 조정합니다.
  5. 결과 Calendar 개체는 이제 사용자의 TimeZone에 관계없이 GMT의 동일한 시간을 나타냅니다.

이 접근 방식을 활용하면 사용자의 입력 시간을 모든 TimeZone에서 GMT로 정확하게 변환할 수 있습니다. WebService와의 데이터 호환성을 보장합니다.

위 내용은 Java에서 모든 TimeZone의 타임스탬프를 GMT로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿