Go의 `time.Parse`가 시간대 정보를 올바르게 사용하지 않는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-24 07:38:10
원래의
852명이 탐색했습니다.

Why Doesn't Go's `time.Parse` Use Timezone Information Correctly?

Time.Parse가 시간대 정보를 사용하지 않음

Q: time.Parse가 시간대 정보를 활용하지 않는 이유는 무엇입니까? 다양한 시간대에 대해 고유한 시간 값을 생성해야 합니다.

제공된 예제 코드에서 time.Parse 함수는 두 개의 타임스탬프 "2018-05-11 IST" 및 "2018-05를 구문 분석하는 데 사용됩니다. -11 UTC", "2006-01-02 MST" 레이아웃 사용. 그러나 출력에서는 두 타임스탬프의 결과가 동일한 Unix 시간임을 보여줍니다.

Output:
1525996800
1525996800
로그인 후 복사

IST와 UTC의 시간 오프셋이 다르기 때문에 이는 말이 되지 않습니다.

A: 모호한 시간대 약어 및 제로 오프셋

이 문제의 근본 원인은 시간의 모호한 시간대 약어입니다.구문 분석. 특히, 주어진 시간대 약어에 대해 알려진 오프셋이 없는 경우 time.Parse는 동일한 약어와 제로 오프셋을 갖는 시간대를 가정합니다.

제공된 예에서 "IST" 여러 시간대(인도, 아일랜드, 이스라엘 등)를 나타낼 수 있는 모호한 약어입니다. 따라서 time.Parse는 이를 오프셋이 0인 조작된 시간대로 해석하여 IST와 UTC 간의 실제 시간 차이를 효과적으로 무시합니다.

해결책: 숫자 시간대 오프셋 또는 Time.ParseInLocation() 사용

이 문제를 해결하려면 몇 가지 옵션이 있습니다. 사용 가능:

  • 숫자 시간대 오프셋 사용: 여기에는 정확성을 보장하기 위해 레이아웃 문자열에 시간대 오프셋을 직접 지정하는 작업이 포함됩니다.
  • time.ParseInLocation 사용 (): 이 기능을 사용하면 시간을 구문 분석할 때 사용자 정의 시간대를 지정하여 모호성을 제거할 수 있습니다. issue.
  • 원하는 시간대 로드: 특정 시간대(예: IST의 경우 "Asia/Kolkata")를 로드하고 time.ParseInLocation()을 사용하여 시간이 올바른 오프셋을 사용하여 구문 분석했습니다.

위 내용은 Go의 `time.Parse`가 시간대 정보를 올바르게 사용하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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