Cookies management by TermsFeed Cookie Consent
Russia has invaded Ukraine and already killed tens of thousands of civilians, with many more raped or tortured. It's a genocide. We need your help. Let's fight back against the Russian regime.
Help Ukraine! Fight the Russian regime!

⌚ Unix time in Go [cheatsheet]

cheatsheet time

Please consider supporting us by disabling your ad blocker

The time package in Go contains convenient functions for operating on Unix time (also known as Epoch time, Posix time, seconds since the Epoch, or UNIX Epoch time). Using them, you can easily get the current Unix timestamp, convert a time.Time struct to Unix time, and vice versa - Unix timestamp to time.Time. Check out this cheatsheet to learn how to do it and come back to it whenever you forget 😉

Convert date/time to Unix epoch time

The time.Time struct contains Unix(), UnixMilli(), UnixMicro() and UnixNano() methods for converting a time object to a Unix timestamp of type int64.

date := time.Date(2022, 6, 1, 0, 0, 0, 0, time.UTC)
fmt.Println(date.Unix())
fmt.Println(date.UnixMilli())
fmt.Println(date.UnixMicro())
fmt.Println(date.UnixNano())

Output:

1654041600
1654041600000
1654041600000000
1654041600000000000

Get current Unix timestamp

To get the current Unix timestamp in Go, you just need to get the current time of type time.Time using the time.Now() function and convert it to Unix timestamp using Unix(), UnixMilli(), UnixMicro(), or UnixNano() method.

Get current Unix/Epoch time in seconds

fmt.Println(time.Now().Unix())

Output:

1657861095

Get current Unix/Epoch time in milliseconds

fmt.Println(time.Now().UnixMilli())

Output:

1657861095093

Get current Unix/Epoch time in microseconds

fmt.Println(time.Now().UnixMicro())

Output:

1657861095093115

Get current Unix/Epoch time in nanoseconds

fmt.Println(time.Now().UnixNano())

Output:

1657861095093117000

Convert Unix timestamp to time.Time

The time package has three functions to convert from an int64 Unix timestamp to a time.Time object:

Second Unix timestamp to time.Time

var timestamp int64 = 1657861095

t := time.Unix(timestamp, 0)
fmt.Println(t.UTC())

Output:

2022-07-15 04:58:15 +0000 UTC

Millisecond Unix timestamp to time.Time

var timestamp int64 = 1657861095093

t := time.UnixMilli(timestamp)
fmt.Println(t.UTC())

Output:

2022-07-15 04:58:15.093 +0000 UTC

Microsecond Unix timestamp to time.Time

var timestamp int64 = 1657861095093115

t := time.UnixMicro(timestamp)
fmt.Println(t.UTC())

Output:

2022-07-15 04:58:15.093115 +0000 UTC

Nanosecond Unix timestamp to time.Time

var timestamp int64 = 1657861095093117123

t := time.Unix(0, timestamp)
fmt.Println(t.UTC())

Output:

2022-07-15 04:58:15.093117123 +0000 UTC

Parse Unix timestamp from string to time.Time

To parse a string Unix timestamp and get a time.Time object, you must first convert the timestamp from string to int64, and then convert it to time.Time using the Unix(), UnixMilli(), or UnixMicro() function.

timeString := "1657861095"
timestamp, err := strconv.ParseInt(timeString, 10, 64)
if err != nil {
    panic(err)
}
t := time.Unix(timestamp, 0)
fmt.Println(t.UTC())

Output:

2022-07-15 04:58:15 +0000 UTC

⏳ Time difference between two dates in Go

shorts time

📅 YYYY-MM-DD date format in Go

Learn how to format date without time
introduction time

⏲️ Measure execution time in Go

Learn how to measure the time taken by a function
introduction time