>백엔드 개발 >Golang >My Go 시간대 변환이 항상 UTC를 반환하는 이유는 무엇입니까?

My Go 시간대 변환이 항상 UTC를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-30 13:21:15543검색

Why Does My Go Timezone Conversion Always Return UTC?

시간대 구문 분석 및 변환 이해

제공된 Go 코드 조각에서 parseAndPrint 함수는 특정 시간을 구문 분석하여 지정된 시간대로 표시하는 것을 목표로 합니다. 그러나 선택한 시간대에 관계없이 항상 "[날짜] 05:00:00 0000 UTC"를 반환합니다. 이 문제를 해결하려면 시간대 구문 분석 및 변환에 대한 깊은 이해가 필수적입니다.

Go의 시간대 처리

시간 값을 구문 분석할 때 일반적으로 현재 현지 시간대로 수행합니다. 그러나 시간대 약어는 구문 분석하는 위치에 따라 다릅니다. 다른 시간대의 시간을 구문 분석해야 하는 경우 적절한 시간 위치 또는 시간대 오프셋을 명시적으로 지정해야 합니다.

코드 문제

제공된 코드의 문제는 다음 줄에 있습니다. 테스트 시간은 time.Date를 사용하여 생성됩니다. 이 줄은 입력 문자열을 구문 분석할 때 시간대 매개변수를 제공하더라도 테스트 시간의 시간대를 시스템의 현지 시간대로 설정합니다. 따라서 테스트 시간을 UTC로 변환하면 항상 현지 시간대와 동일한 오프셋이 발생합니다.

해결책

이 문제를 해결하려면 제공된 시간대 정보를 사용하여 테스트 시간을 생성해야 합니다. 이는 time.LoadLocation을 사용하여 해당 시간 위치 객체를 로드한 다음 time.ParseInLocation을 사용하여 해당 위치의 입력 문자열을 구문 분석하여 수행할 수 있습니다. 결과 시간은 올바른 시간대 오프셋을 갖게 됩니다.

대체 접근 방식

특정 요구 사항에 따라 시간대 및 변환 처리를 위한 대체 접근 방식을 고려할 수 있습니다.

  • UTC 방법을 사용하여 명시적으로 변환하여 모든 시간을 UTC로 정규화합니다.
  • 시간대 오프셋(예: "-05:00").
  • Go의 time.Location 인터페이스를 활용하여 특정 시간대의 시간을 로드하고 구문 분석합니다.

위 내용은 My Go 시간대 변환이 항상 UTC를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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