Golang date parsing

Issue

I have a string like this

Fri, 3 Mar 2017 13:08:54 +0100

I need to convert this string in a time.Time object in Golang.

The layout seems to be RFC1123Z so I have try in this way

(RFC1123Z = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone)

d := "Thu, 2 Mar 2017 10:44:13 +0100"
da, _ := time.Parse(time.RFC1123Z, d)
fmt.Println(da)

But I get this:

0001-01-01 00:00:00 +0000 UTC

What is wrong?

Solution

For it to be time.RFC1123Z the day must be 02 not 2.

package main

import (
    "fmt"
    "time"
)

func main() {
    d := "Thu, 02 Mar 2017 10:44:13 +0100"
    da, _ := time.Parse(time.RFC1123Z, d)
    fmt.Println(da)
}

https://play.golang.org/p/JFtErfZTtk

If you cannot change the source time string you can alternatively parse it with the Mon, 2 Jan 2006 15:04:05 -0700 format:

da, _ := time.Parse("Mon, 2 Jan 2006 15:04:05 -0700", d)

References:

Answered By – zerkms

Answer Checked By – David Marino (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.