Change timezone to UTC

Avatar of the author Willem Schots
22 Jan, 2024
~1 min.
RSS

User preferences, scheduling or legal requirements. There are situations where you will need to convert time.Time values to UTC.

This snippet will show you how.

Before we dive in, it’s good to know how time.Time values represent time instants. Learn more here.

Change Location to UTC

Converting a time.Time to UTC is done using the UTC() method on time.Time.

For example:

main.go
package main

import (
	"fmt"
	"time"
)

func main() {
	// t1 is time in "UTC+3" timezone
	eastOfUTC := time.FixedZone("UTC+3", 3*60*60)
	t1 := time.Date(2024, 01, 22, 13, 37, 0, 0, eastOfUTC)
	// t2 represents the same time instant in UTC
	t2 := t1.UTC()

	fmt.Println(t1.String())
	fmt.Println(t2.String())
	fmt.Printf("same time instant: %v\n", t1.Equal(t2))
}

In this example, we initially have a time value t1 in the UTC+3 location (a fixed timezone).

We then call t1.UTC() to create t2 in the UTC timezone.

t1 and t2 represent the same time instant, but they will have different clock readings. t2 will read 3 hours before t1.

Run the example to verify this.

Make privacy claims you can back up

Join 800+ subscribers.
One email every few weeks.

I share what I learn building privacy-friendly systems. From confidential computing to Verbond and the occasional Go tip or trick. You can unsubscribe at any time.

A photo of Willem

Written by Willem Schots

I help teams prove what happens to their users' data, and I'm building Verbond, which shows where data can go before third-party code runs.

This site started as a place to learn Go. Most posts are now about privacy-friendly and verifiable systems, with the occasional Go post in between.

Want to talk about your system? Book a 30-minute call, or follow me on Bluesky and LinkedIn.