Date and time formatting with Golang can be quite confusing due to its weird formatting patterns. But there are some easy methods that instantly give you full control of handling date and time with Go language.

First, install Go language and create a new Go project if you have not yet created one.

Time Formatting

The following code will print the current unformatted time.

t := time.Now()

fmt.Println(t)  // 2022-01-06 00:00:00 +0000 UTC m=+0.000000001

Seconds

The following methods can be used to get the current second.

t := time.Now()

fmt.Println(t.Format("05"))
fmt.Println(t.Second())

Minutes

The following methods will print the current minute.

t := time.Now()

fmt.Println(t.Format("04"))
fmt.Println(t.Minute())

Hours

The following codes will print the current hour in both 12 and 24-hour formats.

t := time.Now()

fmt.Println(t.Format("03"))  // 12 hours
fmt.Println(t.Format("15"))  // 24 hours
fmt.Println(t.Hour())        // 24 hours

Date Formatting

Day

The following code will print the current day in both short and long formats, such as “Sun” and “Sunday”.

t := time.Now()

fmt.Println(t.Format("Mon"))
fmt.Println(t.Format("Monday"))

Date

The following code will print the current date, such as 05, 18, 24.

t := time.Now()

fmt.Println(t.Day())

Month

The following code will print the current month as a number and full month name.

t := time.Now()

fmt.Println(t.Format("01"))
fmt.Println(t.Month())

Year

The following code will print the current year in both short and long formats.

t := time.Now()

fmt.Println(t.Format("06"))    // 08
fmt.Println(t.Format("2006"))  // 2010
fmt.Println(t.Year())          // 2022

Popular Date-Time Formats

We can use combinations of previously used methods to re-create popular date and time formats.

Hour, Minute And Second

The following code will print the current time in the Hour:Minute:Second format.

t := time.Now()

fmt.Println(t.Format("15:04:05"))

Year, Month And Date

The following code will print the current date in Date-Month-Year and Year-Month-Date formats. 

t := time.Now()

fmt.Println(t.Format("02-01-2006"))
fmt.Println(t.Format("2006-01-02"))

Time-Zone Adjustment

We can use the LoadLocation() method to offset the timezone.

t := time.Now()
location, err := time.LoadLocation("UTC")

if err != nil {
	return
}

fmt.Println(t.In(location).Format("2006-01-02 15:04:05"))

Visit pkg.go.dev/time for more information about the Go Time package.