用golang解析时间:无法解析“ -08-23 +

问题描述

我在golang中有一个过期时间:

fmt.Println(currtok.Expiry.String())

此打印:

2020-08-23 14:02:04.486055707 +0000 UTC m=+3600.163685667

现在,我尝试将此字符串转换为时间戳: 我将其存储在Cookie中:

c.SetCookie("ex_cookie",currtok.Expiry.String(),3600,"/","localhost",false,true)

我再次得到它:

ex_cookie,err := c.Request.Cookie("ex_cookie")
if err != nil {
    panic(err.Error())
}
testtime,err := time.Parse("2020-08-23 14:02:04.486055707 +0000 UTC m=+3600.163685667",ex_cookie.Value)
if err != nil {
    panic(err.Error())

错误类似:

parsing time "2020-08-23+14%3A01%3A38.653030018+%2B0000+UTC+m%3D%2B3600.250019695" as "2020-08-23 13:59:23.522882812 +0000 UTC": cannot parse "-08-23+14%3A01%3A38.653030018+%2B0000+UTC+m%3D%2B3600.250019695" as "0-08-"

我在做什么错?我应该如何将字符串解析回有效的时间戳? }

解决方法

时间的最近部分(opt out)是否相关? 在其他情况下,您可以删除该部分,并使用此处显示的标准符号投放时间:https://gist.github.com/unstppbl/26942512b3ca6a92857c87124445ca0b

这里有个例子

 +0000 UTC m=+3600.163685667

结果:

package main

import (
    "fmt"
    "strings"
    "time"
)

func main() {
    var (
        testTime time.Time
        err      error
    )
    s := `2020-08-23 14:02:04.486055707 +0000 UTC m=+3600.163685667`
    s = strings.Split(s," +")[0]
    if testTime,err = time.Parse("2006-01-02 15:04:05",s); err != nil {
        panic(err.Error())
    }
    fmt.Println(testTime)
}