I've been attempting to get a specific string output from pyhtons datetime (2006-01-02T15:04:05.000Z), so that I can easily parse it in golang using time.Parse.
I tried (in python)
datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
Which will give me something like this: "2018-11-06T22:48:50.002750Z"
And when I try to parse it like this in Golang:
dtLayout := "2006-01-02T15:04:05.000Z"
dateStr := "2018-11-06T22:48:50.002750Z"
parsedDate, err := time.Parse(dtLayout, dateStr)
if err != nil {
if err != nil {
log.Printf("error: %v", err)
}
I get this error:
2018/11/06 16:49:11 error: parsing time "2018-11-06T22:48:50.002750Z" as "2006-01-02T15:04:05.000Z": cannot parse "750Z" as "Z"
There's probably an easy way to do this using just milliseconds, but I'm stubborn and feel like I'm close.
Zeros in the fractional seconds must match the number of characters exactly, and as your error states, the portion after 750Z
doesn't match the corresponding portion of the format string.
You can add the correct number of zeros, like "2006-01-02T15:04:05.000000Z"
, or use 9
as a more flexible format.
dtLayout := "2006-01-02T15:04:05.9Z"