Time Formatting in Golang
Golang supports time formatting and parsing via pattern-based layouts. To format time, we use the Format() method which formats a time.Time object.
Syntax:
func (t Time) Format(layout string) string
We can either provide custom format or predefined date and timestamp format constants are also available which are shown as follows.
Format | Example |
---|---|
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” |
Layouts must use the reference time Mon Jan 2 15:04:05 MST 2006 to show the pattern with which to format/parse a given time/string.
Example 1:
// Golang program to illustrate the time // formatting using custom layouts package main import ( "fmt" "time" ) func main() { // this function returns the present time current_time := time .Now() // individual elements of time can // also be called to print accordingly fmt.Printf( "%d-%02d-%02dT%02d:%02d:%02d-00:00\n" , current_time.Year(), current_time.Month(), current_time.Day(), current_time.Hour(), current_time.Minute(), current_time.Second()) // formatting time using // custom formats fmt.Println(current_time.Format( "2006-01-02 15:04:05" )) fmt.Println(current_time.Format( "2006-January-02" )) fmt.Println(current_time.Format( "2006-01-02 3:4:5 pm" )) } |
Output:
2009-11-10T23:00:00-00:00 2009-11-10 23:00:00 2009-November-10 2009-11-10 11:0:0 pm
Example 2:
// Golang program to illustrate the time // formatting using format constants package main import ( "fmt" "time" ) func main() { // this function returns the present time current_time := time .Now() // using inbuilt format constants // shown in the table above fmt.Println( "ANSIC: " , current_time.Format( time .ANSIC)) fmt.Println( "UnixDate: " , current_time.Format( time .UnixDate)) fmt.Println( "RFC1123: " , current_time.Format( time .RFC1123)) fmt.Println( "RFC3339Nano: " , current_time.Format( time .RFC3339Nano)) fmt.Println( "RubyDate: " , current_time.Format( time .RubyDate)) } |
Output:
ANSIC: Tue Nov 10 23:00:00 2009 UnixDate: Tue Nov 10 23:00:00 UTC 2009 RFC1123: Tue, 10 Nov 2009 23:00:00 UTC RFC3339Nano: 2009-11-10T23:00:00Z RubyDate: Tue Nov 10 23:00:00 +0000 2009
Contact Us