Go Unix 타임스탬프 스니펫
Unix 초, 밀리초, 나노초, 타임스탬프를 time.Time으로 변환, RFC3339 또는 사용자 정의 레이아웃으로 포맷하는 Go 예제.
Current Unix timestamp (seconds)
package main
import "time"
func main() {
ts := time.Now().Unix()
}Current Unix timestamp (milliseconds)
time.Now().UnixMilli()Current Unix timestamp (nanoseconds)
time.Now().UnixNano()time.Time from Unix timestamp
import "time"
t := time.Unix(1700000000, 0)
t.UTC() // ensure UTCFormatted string
import "time"
t := time.Unix(1700000000, 0)
t.Format(time.RFC3339) // "2023-11-15T06:13:20Z"
t.Format("2006-01-02 15:04:05") // custom layoutTimestamp from time.Time
import "time"
t, _ := time.Parse(time.RFC3339, "2023-11-15T06:13:20Z")
t.Unix()Go 타임스탬프 기본
Go의 time 패키지에는 Unix 초·밀리초·나노초를 위한 직접 헬퍼가 있습니다. 초에는 time.Now().Unix()를, JavaScript 호환 밀리초에는 time.Now().UnixMilli()를 사용하세요.
time.Time 값 형식화
Unix 초로부터 time.Time을 만들려면 time.Unix(seconds, 0)을 사용하고, 결정적 출력이 필요하면 UTC()를 호출하세요. API 응답에는 보통 RFC3339가 가장 좋은 문자열 형식입니다.
Go 운영 참고 사항
Go의 time.Time은 위치(location)를 갖지만, Unix 타임스탬프는 항상 단일 UTC 시점을 나타냅니다. API와 데이터베이스 경계에서 타임스탬프를 정규화한 뒤, 사용자나 비즈니스 규칙이 현지 시각을 필요로 할 때 명시적 위치로 형식화하세요. 이렇게 하면 비교가 단순해지고 서버의 로컬 설정이 출력을 바꾸는 것을 막습니다.
- 로그, 큐, 데이터베이스 필드의 Unix 초에는 time.Now().Unix()를 사용
- JavaScript 호환 값에는 time.Now().UnixMilli()를 사용
- 결정적 문자열을 형식화하기 전에 time.Unix(seconds, 0).UTC()를 사용
- API 응답에는 time.RFC3339 또는 time.RFC3339Nano를 사용
FAQ
- time.Time과 Unix 초 중 무엇을 저장해야 하나?
- 달력 연산이 필요하면 Go 내부에서 time.Time을 사용하세요. 값을 인덱싱·쿼리하거나 다른 시스템과 공유해야 하면 Unix 초 또는 데이터베이스 타임스탬프 타입을 저장하세요.
- time.Unix은 어떤 단위를 기대하나?
- time.Unix은 초와 나노초를 별도의 인수로 기대합니다. 밀리초를 받으면 time.Unix을 호출하기 전에 값을 나누거나 변환하세요.
- Go 출력을 검증하려면?
- 값을 t.UTC().Format(time.RFC3339)로 형식화하고, 기록 대상 API·큐·데이터베이스 열이 기대하는 타임스탬프와 비교하세요.