Golang Time Format Example
Go (Golang) supports time formatting out of the standard library. It’s possible to specify a pattern-like format when converting a time.Time to a string value. It’s possible to use the following method: time.Format
func (t Time) Format(layout string) string
Format returns a textual representation of the time value formatted according to layout, which defines the format by showing how the reference time, defined to be Mon Jan 2 15:04:05 -0700 MST 2006 would be displayed if it were the value; it serves as an example of the desired output. The same display rules will then be applied to the time value.
Format uses a layout defined as a default date 2 Jan 2006 which will be used to format the time, let’s see a couple of examples to better understand how this works.
Golang Time Format YYYY-MM-DD
Here’s a typical scenario, where we want to format a time.Time instance into a standard string in the YYYY-MM-DD format.
package main
import "time"
import "fmt"
func main() {
now := time.Now()
fmt.Println(now.Format("2006-02-01"))
}
which will result in
2009-10-11
Bear in mind that if you run this on play.golang.org the sandbox has been seeded with a static time value (2009-10-11) so you might see always the same date - try running these example on your machine
Golang Time Formatting Standards
In the Go (Golang) standard library we have also a bunch of useful constants used as layouts for formatting time, you can find them in the time package.
Standard | Layout |
---|---|
ANSIC | Mon Jan _2 15:04:05 2006 |
UnixDate | Mon Jan _2 15:04:05 MST 2006 |
RubyDate | Mon Jan 02 15:04:05 -0700 2006 |
RFC822 | 02 Jan 06 15:04 MST |
RFC822Z | 02 Jan 06 15:04 -0700 |
RFC850 | Monday, 02-Jan-06 15:04:05 MST |
RFC1123 | Mon, 02 Jan 2006 15:04:05 MST |
RFC1123Z | Mon, 02 Jan 2006 15:04:05 -0700 |
RFC3339 | 2006-01-02T15:04:05Z07:00 |
RFC3339Nano | 2006-01-02T15:04:05.999999999Z07:00 |
Kitchen | 3:04PM |
Based on the above formats we can easily use any of those constants to format a time value as we prefer. Let’s see an example
package main
import "time"
import "fmt"
func main() {
now := time.Now()
fmt.Println(now.Format(time.RFC822))
fmt.Println(now.Format(time.Kitchen))
fmt.Println(now.Format(time.UnixDate))
}
Which results in the following
10 Nov 09 23:00 UTC
11:00PM
Tue Nov 10 23:00:00 UTC 2009
Ready for your next Golang Job? Join other fellow Gophers, submit your profile and get hired