이전의 시간대 코드 구문 분석 시도에서 아래 코드는 일관되게 "[date] 05:00:00라는 결과를 산출했습니다. 0000 UTC"는parseAndPrint에 대해 선택한 시간대에 관계없이 function.
// time testing with arbitrary format package main import ( "fmt" "time" ) func main() { now := time.Now() parseAndPrint(now, "BRT") parseAndPrint(now, "EDT") parseAndPrint(now, "UTC") } func parseAndPrint(now time.Time, timezone string) { test, err := time.Parse("15:04:05 MST", fmt.Sprintf("05:00:00 %s", timezone)) if err != nil { fmt.Println(err) return } test = time.Date( now.Year(), now.Month(), now.Day(), test.Hour(), test.Minute(), test.Second(), test.Nanosecond(), test.Location(), ) fmt.Println(test.UTC()) }
이 문제는 time.Parse가 현재 위치의 시간을 해석하는데 의도한 시간대와 일치하지 않을 수 있다는 사실에서 발생합니다.
시간대 코드를 정확하게 구문 분석하려면 time.Location을 사용하는 것이 올바른 접근 방식입니다. 향상된 구현은 다음과 같습니다.
func parseAndPrint(now time.Time, timezone string) { location, err := time.LoadLocation(timezone) if err != nil { fmt.Println(err) return } test, err := time.ParseInLocation("15:04:05 MST", "05:00:00", location) if err != nil { fmt.Println(err) return } fmt.Println(test.UTC()) }
이 업데이트된 코드에서는
위 내용은 `time.Parse`를 사용하여 다른 시간대를 지정했음에도 불구하고 내 Go 코드가 항상 UTC 시간을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!