Golang에서 밀리초를 time.Time으로 변환하는 방법
Min-jun Kim
Dev Intern · Leapcell

Go (Golang)에서 밀리초 단위의 시간을 처리하는 것은 일반적인 요구 사항이며, 특히 시간을 Unix epoch(1970년 1월 1일) 이후의 밀리초로 나타내는 시스템 또는 데이터와 상호 작용할 때 그렇습니다. 이 기사에서는 밀리초를 Go의 time.Time 유형으로 변환하고 그 반대로 변환하는 방법에 대한 포괄적인 가이드를 제공하여 시간 조작의 정확성과 용이성을 보장합니다.
Key Takeaways
- 밀리초를
time.Time
으로 변환 -time.Unix(0, millis * int64(time.Millisecond))
또는time.UnixMilli(millis)
를 사용합니다. time.Time
을 밀리초로 변환 - 직접 변환하려면t.UnixMilli()
를 사용합니다.- JSON 밀리초 타임스탬프 처리 - 타임스탬프를
int64
로 저장하고time.UnixMilli()
를 사용하여 변환합니다.
밀리초를 time.Time
으로 변환
Unix epoch 이후의 밀리초를 Go의 time.Time
객체로 변환하려면 time.Unix
함수를 사용할 수 있습니다. 이 함수는 초와 나노초의 두 가지 매개변수를 허용합니다. 1밀리초는 1,000,000나노초와 같으므로 밀리초 값에서 초와 나머지 나노초를 계산할 수 있습니다.
변환을 수행하는 방법은 다음과 같습니다.
package main import ( "fmt" "time" ) func main() { // Unix epoch 이후의 밀리초 millis := int64(1610000000000) // 밀리초를 time.Time으로 변환 t := time.Unix(0, millis*int64(time.Millisecond)) fmt.Println("변환된 시간:", t) }
설명
millis*int64(time.Millisecond)
는 밀리초를 나노초로 변환합니다.time.Unix(0, nanoseconds)
는 Unix epoch 이후 주어진 나노초에 해당하는time.Time
객체를 만듭니다. Go 버전 1.17부터 표준 라이브러리는 이 변환을 단순화하는time.UnixMilli
함수를 도입했습니다.
t := time.UnixMilli(millis)
이 함수는 Unix epoch 이후 제공된 밀리초에 해당하는 time.Time
객체를 직접 반환합니다.
time.Time
을 밀리초로 변환
time.Time
객체가 있고 Unix epoch 이후의 밀리초를 얻어야 하는 경우 UnixMilli
메서드를 사용할 수 있습니다.
package main import ( "fmt" "time" ) func main() { // 현재 시간 t := time.Now() // time.Time을 Unix epoch 이후의 밀리초로 변환 millis := t.UnixMilli() fmt.Println("epoch 이후의 밀리초:", millis) }
밀리초로 JSON 처리
밀리초 단위의 타임스탬프를 포함하는 JSON 데이터로 작업할 때 밀리초를 int64
필드로 언마샬링한 다음 time.Time
으로 변환하도록 struct를 정의할 수 있습니다.
package main import ( "encoding/json" "fmt" "time" ) type Event struct { Name string `json:"name"` Timestamp int64 `json:"timestamp"` } func (e *Event) Time() time.Time { return time.UnixMilli(e.Timestamp) } func main() { data := []byte(`{"name": "샘플 이벤트", "timestamp": 1610000000000}`) var event Event if err := json.Unmarshal(data, &event); err != nil { fmt.Println("오류:", err) return } fmt.Println("이벤트 이름:", event.Name) fmt.Println("이벤트 시간:", event.Time()) }
FAQs
Go 1.17+에서는 time.UnixMilli(millis)
를 사용하고 이전 버전에서는 time.Unix(0, millis * int64(time.Millisecond))
를 사용합니다.
time.Time
객체에서 t.UnixMilli()
를 호출하여 Unix epoch 이후의 밀리초를 얻습니다.
타임스탬프를 int64
로 저장하고 JSON 데이터를 읽을 때 time.UnixMilli()
를 사용하여 변환합니다.
결론
Go에서 밀리초와 time.Time
간의 변환은 특히 Go 1.17에 도입된 향상된 기능을 통해 간단합니다. time.UnixMilli
와 같은 함수와 UnixMilli
와 같은 메서드를 활용하면 시간 변환을 효율적이고 정확하게 처리할 수 있습니다.
자세한 내용은 time
패키지에 대한 Go 설명서를 참조하십시오.
저희는 Go 프로젝트 호스팅을 위한 최고의 선택, Leapcell입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 지불하고 요청이나 요금은 없습니다.
타의 추종을 불허하는 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불합니다.
- 예: 25달러는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
간편한 확장성 및 고성능
- 쉬운 동시성 처리를 위한 자동 확장.
- 운영 오버헤드가 없으므로 구축에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 저희를 팔로우하세요: @LeapcellHQ