Go에서 시간 오프셋을 위치/시간대로 변환
시간에 민감한 데이터로 작업할 때 시간을 변환해야 하는 경우가 많습니다. 사용 가능한 time.Location 객체로 오프셋합니다. 이를 통해 특정 시간대를 기준으로 시간 값을 정확하게 표현하고 조작할 수 있습니다.
예를 들어 다음 코드 조각을 고려하세요.
func main() { offset := "+1100" t, err := time.Parse("15:04 GMT-0700","15:06 GMT"+offset) if err != nil { fmt.Println("fail", err) } fmt.Println(t) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
이 코드는 지정된 시간 값을 사용하여 시간 값을 구문 분석합니다. 오프셋을 사용하면 나중에 t.Location()을 호출하면 의미 있는 정보가 반환되지 않습니다.
이 문제를 해결하려면 수동으로 time.Location 객체를 생성해야 합니다. 원하는 시간 오프셋을 나타냅니다. 이는 time.FixedZone 함수를 사용하여 달성할 수 있습니다.
loc := time.FixedZone("UTC+11", +11*60*60)
loc 변수는 UTC 11 시간대를 나타내는 time.Location 개체입니다. 그런 다음 t 변수를 다음 위치에 설정할 수 있습니다.
t = t.In(loc)
이렇게 하면 GMT 오프셋이 기록되고 최종 사용자의 실제 위치 시간 오프셋을 기준으로 시간을 출력할 수 있습니다. .
예는 다음과 같습니다.
package main import ( "fmt" "time" ) func main() { loc := time.FixedZone("UTC+11", +11*60*60) t := time.Now() fmt.Println(t) fmt.Println(t.Location()) t = t.In(loc) fmt.Println(t) fmt.Println(t.Location()) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
이 코드는 다음:
2009-11-10 23:00:00 +0000 UTC m=+0.000000001 UTC 2009-11-11 10:00:00 +1100 UTC+11 UTC+11 2009-11-10 23:00:00 +0000 UTC UTC+11
보시다시피, 시간 t는 이제 UTC 11 시간대이고 해당 Location()은 적절한 정보를 반환합니다. 이를 통해 정확한 시간 기반 작업 및 계산이 가능합니다.
위 내용은 Go에서 시간 오프셋을 시간대로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!