Go 시간대 변환이 작동하지 않는 이유는 무엇입니까? 'time.Time' 비교에 대한 심층 분석

Mary-Kate Olsen
풀어 주다: 2024-10-24 23:48:31
원래의
153명이 탐색했습니다.

Why is my Go Time Zone Conversion Not Working? A Deep Dive into `time.Time` Comparison

Go 시간 비교: 시간대 변환의 미스터리 풀기

Go의 시간 조작 영역에서 일반적인 작업은 시간을 변환하는 것입니다. 구역. 그러나 때로는 가장 단순한 기능이라도 예상치 못한 결과를 초래할 수 있습니다. UTC 시간을 0700 WIB로 변환하려고 시도하는 동안 개발자가 보고한 문제를 살펴보겠습니다.

개발자는 시간을 0700 WIB로 변환하는 생성WIB 함수와 시간을 UTC로 변환하는 생성UTC라는 두 가지 함수를 작성했습니다. . generateUTC는 완벽하게 수행되었지만, generateWIB는 지속적으로 부족했습니다. 개발자가 제공한 코드 조각은 다음과 같습니다.

<code class="go">expect := time.Date(2016, 12, 12, 1, 2, 3, 4, wib)
t1 := time.Date(2016, 12, 12, 1, 2, 3, 4, time.UTC)
res := GenerateWIB(t1)
if res != expect {
    fmt.Printf("WIB Expect %+v, but get %+v", expect, res)
}</code>
로그인 후 복사

res와 Expect가 모두 동일한 시점을 나타낼 것이라는 기대에도 불구하고 res !=expect 비교는 지속적으로 false를 반환했습니다. 당황한 개발자는 혹시 뭔가를 놓친 것은 아닌지 의문을 품었습니다.

답은 Go 시간의 복잡한 특성에 있습니다. 시간 구조. 문서에 공개된 대로 비교에 사용된 == 연산자는 시간 순간뿐만 아니라 time.Value와 관련된 위치 및 단조 시계 판독값도 평가합니다.

두 시간 값을 정확하게 비교하려면 . Equal() 메소드를 사용해야 합니다. 이 방법을 사용하면 절대 시간, 위치 및 단조 시계 읽기를 포함하여 시간 값의 모든 관련 측면을 비교에서 고려할 수 있습니다.

결론적으로 Go에서 시간 변환 작업을 수행할 때 다음을 이해하는 것이 중요합니다. 시간의 복잡성. 시간 구조. 시간 비교를 위해 .Equal() 메서드를 활용하면 개발자는 예상치 못한 결과를 방지하고 정확한 결과를 보장할 수 있습니다.

위 내용은 Go 시간대 변환이 작동하지 않는 이유는 무엇입니까? 'time.Time' 비교에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!