skip to Main Content

I know I need to use a time layout in Go (as shown here https://golang.org/src/time/format.go) but I can’t find the layout for an ISO 8601 timestamp.

If it helps, I get the timestamp from the Facebook API. Here is an example timestamp: 2016-07-25T02:22:33+0000

4

Answers


  1. Chosen as BEST ANSWER

    I found this layout to work: "2006-01-02T15:04:05-0700"


  2. RFC3339 is equivalent to ISO 8601. Specifically, it has identical format, RFC3339 just has stricter requirements (example, it requires a complete date representation with 4-digit year).

    What's the difference between ISO 8601 and RFC 3339 Date Formats?

    So you can use the constant time.RFC3339 as your layout.

    Login or Signup to reply.
  3. The problem here is that RFC3339 requires the zone offset to be given as "+00:00" (or "Z" in case of UTC) while ISO8601 allows it to be "+0000".

    From RFC3339:

    [...]
    
    time-numoffset  = ("+" / "-") time-hour ":" time-minute
    time-offset     = "Z" / time-numoffset
    
    [...]
    
    full-time       = partial-time time-offset
    date-time       = full-date "T" full-time
    

    So instead of the time.RFC3339 layout

    "2006-01-02T15:04:05Z07:00"
    

    you have to use:

    "2006-01-02T15:04:05Z0700"
    
    Login or Signup to reply.
  4. You have that to use the some layout of your date.

     data   := "2022-01-24T00:00:00.000-03:00"
     layout := "2006-01-02T15:04:05.000-03:00"
    
     dataTime, err :=  time.Parse(layout, data)
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search