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 중국어 웹사이트의 기타 관련 기사를 참조하세요!