> 백엔드 개발 > Golang > Go의 `time.Parse`가 \'EDT\'와 같은 시간대 식별자를 잘못 해석하는 이유는 무엇입니까?

Go의 `time.Parse`가 \'EDT\'와 같은 시간대 식별자를 잘못 해석하는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-25 14:53:12
원래의
235명이 탐색했습니다.

Why Does Go's `time.Parse` Misinterpret Timezone Identifiers Like

Go의 Time.Parse 함수는 왜 시간대 식별자를 파싱하지 않나요?

Go의 time.Parse 함수를 사용하여 시간 문자열을 파싱할 때, "MST"와 같은 시간대 식별자는 "현재 위치" 설정에 따라 해석됩니다. 현재 위치가 약어를 인식하지 못하는 경우 시간은 오프셋이 0인 조작된 위치에 있는 것으로 기록됩니다.

설명하기 위해 다음 코드 조각은 문제를 보여줍니다.

date := "2018 08 01 12:00 EDT"
tn, _ := time.Parse(format, date)

fmt.Println(tn) // Print +0000 despite EDT indicating a -0400 offset
로그인 후 복사

이 코드는 time.Parse 함수를 사용하여 "2006 01 02 15:04 MST" 형식의 날짜 문자열을 구문 분석한 후 다음을 인쇄합니다. 결과 시간 객체. 그러나 함수에서 사용하는 현재 위치가 "EDT" 약어를 인식하지 못하기 때문에 예상되는 "-0400" 대신 "0000"이 인쇄됩니다.

이 문제를 방지하려면 대체 구문 분석 방법을 사용할 수 있습니다. 시간 문자열:

  • 숫자 영역 오프셋 지정: 다음과 같은 레이아웃을 사용하여 구문 분석합니다. 숫자 영역 오프셋(예: 2006 01 02 15:04 -0400)을 포함합니다.
  • ParseInLocation 사용: time.LoadLocation을 사용하여 명시적으로 위치를 지정합니다(예: time.ParseInLocation(format, date) , time.LoadLocation("America/New_York")).

이러한 방법을 활용하면 시간대 약어로 시간 문자열을 정확하게 구문 분석하여 시간대 정보를 올바르게 해석할 수 있습니다.

위 내용은 Go의 `time.Parse`가 'EDT'와 같은 시간대 식별자를 잘못 해석하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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