How to convert ISO 8601 time in golang?

Go

Go Problem Overview


What is the equivalent code in golang for the following shell command ? date -u +%Y-%m-%dT%T%z

Go Solutions


Solution 1 - Go

package main

import (
	"time"
	"fmt"
)

func main(){
	fmt.Println(time.Now().Format(time.RFC3339))
}

golang Time.Format

Solution 2 - Go

package main

import (
	"fmt"
	"time"
)

func main() {
	fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05-0700"))
}

Solution 3 - Go

I had the following spec:

YYYY-MM-DDThh:mm:ss.sssZ

with the final Z being explicitly present in the examples.

Here's how I dealt with it:

  • first I found the time.RFCxxx that was the closest to my target
  • I copied its value
  • I fiddled with it until I found the expected result

which is

2006-01-02T15:04:05.999Z

Solution 4 - Go

ISO8601 allows for variable levels of granularity. You can have just a year, year+month, year+month+day, add a time portion, and optionally have a timezone portion. Go's built-in time parsing, however, requires you to know ahead-of-time which parts will be included.

The github.com/btubbs/datetime library provides a more flexible parser that can handle all the commonly used ISO8601 formats. See https://github.com/btubbs/datetime

Disclosure: I wrote that library.

Solution 5 - Go

Replacing the sign in the format with a Z triggers the ISO 8601 behavior. Which is exactly time.RFC3339. If you are wanting the string output to end in 'Z' what you need to do is convert to the UTC zone.

package main    
import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05Z07:00"))
}
// this is the same format used by RFC3339. just a note on why. 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncodefxView Question on Stackoverflow
Solution 1 - GocikenerdView Answer on Stackoverflow
Solution 2 - GoCrazyCrowView Answer on Stackoverflow
Solution 3 - Goavi.elkharratView Answer on Stackoverflow
Solution 4 - GobtubbsView Answer on Stackoverflow
Solution 5 - GodustinevanView Answer on Stackoverflow