Java 타임스탬프를 사용하여 시간대를 변환하는 방법
이 시나리오에서는 EST 시간대의 타임스탬프가 있으므로 이를 변환해야 합니다. 웹 서비스 호출을 위해 GMT로. 자세한 설명은 다음과 같습니다.
EST에서 GMT로 변환
타임스탬프 값이 처음에는 GMT로 가정되지만 실제로는 GMT일 수 있기 때문에 문제가 발생합니다. 다른 현지 시간대(이 경우 EST). 사용자 매개변수를 EST에서 GMT로 변환하려면 두 시간대 간의 시차를 고려해야 합니다.
캘린더 클래스 사용
사용 중인 타임스탬프를 조작하는 Calendar 클래스입니다. 그러나 Calendar 클래스는 지정한 시간대에 관계없이 항상 에포크 이후 밀리초 단위로 작동한다는 점을 알아야 합니다. 이는 Calendar.getInstance(GMT_TIMEZONE)를 사용하여 타임스탬프에서 달력을 생성할 때 기본 날짜가 GMT 시간대와 일치하도록 조정되지 않음을 의미합니다.
해결책: 시간대 오프셋 조정
타임스탬프를 GMT로 정확하게 변환하려면 시간대 오프셋을 고려해야 합니다. 다음 코드 조각은 솔루션을 제공합니다.
public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); // Compute milliseconds since epoch in GMT long msFromEpochGmt = date.getTime(); // Get offset from UTC in milliseconds at the given time int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust the date with the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; }
출력 예
현재 시간(EDT)을 ConvertToGmt 메소드에 전달하면 다음 출력:
DEBUG - input calendar has date [Thu Oct 23 12:09:05 EDT 2008] DEBUG - offset is -14400000 DEBUG - Created GMT cal with date [Thu Oct 23 08:09:05 EDT 2008]
이는 12:09:05 EDT가 08:09:05 GMT로 성공적으로 변환되었습니다.
위 내용은 Java에서 EST 타임스탬프를 GMT로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!