시간대 오프셋이 있는 time.Time 구성
로그 작업을 할 때 시간대 오프셋이 있는 타임스탬프를 만나는 것이 일반적입니다. 이러한 타임스탬프를 정확하게 구문 분석하고 표현하려면 시간대 오프셋을 포함하는 time.Time 개체를 생성하는 방법을 이해하는 것이 중요합니다.
이 맥락에서 시간대 오프셋은 현지 시간과 현지 시간의 차이를 나타냅니다. 협정 세계시(UTC). 양수 오프셋은 시간대가 UTC보다 앞서 있음을 나타내고, 음수 오프셋은 UTC보다 늦음을 나타냅니다.
time.FixedZone() 사용
한 가지 구성 방법 특정 시간대 오프셋이 있는 time.Time 객체는 time.FixedZone() 함수를 사용하는 것입니다. 이 함수는 고정 오프셋을 사용하여 time.Location을 생성합니다.
예:
loc := time.FixedZone("myzone", -8*3600) nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc) fmt.Println(nativeDate)
위 코드는 오프셋이 -8시간인 "myzone"이라는 이름의 time.Location을 생성합니다. UTC보다 8시간 늦은 시간대를 나타냅니다. 그런 다음 time.Date() 함수는 지정된 연도, 월, 일, 시, 분, 초 및 시간대 오프셋을 사용하여 time.Time을 구성합니다.
time.Parse() 사용
시간대 오프셋을 문자열로 사용할 수 있는 경우 time.Parse() 함수를 사용하여 올바른 오프셋을 가진 time.Time 객체를 생성할 수 있습니다. 참조 영역 오프셋(-0700)만 포함된 레이아웃 문자열을 사용해야 합니다.
예:
t, err := time.Parse("-0700", "-0800") fmt.Println(t, err)
" 0800" 시간대 오프셋을 구문 분석한 결과 시간이 생성됩니다. 오프셋이 -8시간인 시간 개체입니다. 이를 통해 문자열 표현을 시간대 인식 time.Time 객체로 쉽게 변환할 수 있습니다.
예
이러한 기술을 사용하면 Apache 로그 구문 분석의 원래 문제가 해결됩니다. 오프셋이 -0800인 타임스탬프는 다음과 같이 해결할 수 있습니다.
t, err := time.Parse("-0700", "-0800") if err != nil { panic(err) } nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location()) fmt.Println(nativeDate)
이 코드는 지정된 날짜와 -0800 시간대 오프셋을 갖는 time.Time 객체입니다.
위 내용은 Go에서 시간대 오프셋을 사용하여 time.Time 객체를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!