Golang check if time is empty

From the Go Tour basics you may already have stumbled upon the concept of zero values in Go. Check out this section of the Go Tour https://tour.golang.org/basics/12. We can see how the zero value for Go variables is defined.


Variables declared without an explicit initial value are given their zero value.

Golang Zero Values

The zero value for numeric types is 0, for stirngs is "" (empty string) and for boolean types is false. For time.Time the zero value is 0001-01-01 00:00:00 +0000 UTC. You can try this out in by looking at the following snippet of code.

package main

import (
    "fmt"
    "time"
)

func main() {
    var t time.Time
    fmt.Printf("%v", t)
}

You will see the expected output as follows

0001-01-01 00:00:00 +0000 UTC

You can try this code on the Go playground https://play.golang.org/p/bOrt6cQpA0I

How do we check if a date/time is empty?

We can use a method exported directly from within the time package itself. The IsZero method returns whether a time has the zero value or not

func (t Time) IsZero() bool

IsZero reports whether t represents the zero time instant, January 1, year 1, 00:00:00 UTC.

Let’s see an example on how this can be used to quickly see if the time/date is zero/empty.

package main

import (
    "fmt"
    "time"
)

func main() {
    var t time.Time
    fmt.Printf("%v %v\n\n", t, t.IsZero())
    t = time.Now()
    fmt.Printf("%v %v", t, t.IsZero())
}

The expected output is as follows

0001-01-01 00:00:00 +0000 UTC true

2009-11-10 23:00:00 +0000 UTC m=+0.000000001 false

You can also try this out on the Go Playground https://play.golang.org/p/VZeuUqKPbIe


Ready for your next Go Job? Submit your profile and get hired on Golang Cafe