>백엔드 개발 >Golang >Go의 `time.Parse()`가 시간대 식별자를 처리하지 않는 이유는 무엇입니까?

Go의 `time.Parse()`가 시간대 식별자를 처리하지 않는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-26 01:14:10398검색

Why Doesn't Go's `time.Parse()` Handle Timezone Identifiers?

Go의 time.Parse()가 시간대 식별자를 구문 분석하지 않는 이유

Go에서는 time.Parse() 함수를 사용하여 날짜 및 시간 문자열을 Time 값으로 구문 분석합니다. 그러나 다른 날짜 및 시간 라이브러리와 달리 time.Parse()는 "EST" 또는 "EDT"와 같은 시간대 식별자를 자동으로 구문 분석하지 않습니다. 대신 현재 시스템의 시간대를 사용하여 시간 오프셋을 결정합니다.

문제

질문에 제공된 코드가 이 문제를 보여줍니다. 원하는 시간대 위치(미국/뉴욕)를 지정하거나 지정하지 않고 두 가지 방법으로 time.Parse()를 사용하여 날짜 문자열("2018 08 01 12:00 EDT")을 구문 분석하려고 합니다.

사용할 때 time.Parse() 위치를 지정하지 않으면 시간대 식별자("EDT")가 인식되지 않고 시간이 현재 시간으로 구문 분석됩니다. 시스템의 시간대(" 0000"). 이로 인해 잘못된 시간 값이 발생합니다.

해결책

시간대 식별자가 포함된 날짜 및 시간 문자열을 올바르게 구문 분석하려면 time.ParseInLocation() 함수가 다음을 수행해야 합니다. 사용됩니다. 이 함수는 구문 분석된 시간에 대해 원하는 시간대를 지정하는 추가 Location 매개변수를 사용합니다.

제공된 코드에서 time.LoadLocation()은 원하는 시간대("America/New_York)에 대한 Location 객체를 생성하는 데 사용됩니다. ")를 time.ParseInLocation()에 전달하기 전에. 이렇게 하면 시간대 식별자("EDT")가 올바르게 구문 분석되고 올바른 시간 값이 반환됩니다.

대체 솔루션

또는 날짜와 널리 사용되는 "time.go" 라이브러리와 같이 시간대 구문 분석을 명시적으로 지원하는 시간 라이브러리입니다. 이 라이브러리는 시간대 식별자를 직접 구문 분석할 수 있는 ParseInZone()과 같은 기능을 제공합니다.

위 내용은 Go의 `time.Parse()`가 시간대 식별자를 처리하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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