What is the equivalent code in golang for the following shell command ? date -u +%Y-%m-%dT%T%z
package main
import (
"time"
"fmt"
)
func main(){
fmt.Println(time.Now().Format(time.RFC3339))
}
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05-0700"))
}
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.
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