解析 DateTime Go 杜松子酒

Parsing DateTime Go Gin

提问人:Quique Torras 提问时间:8/25/2023 最后编辑:Quique Torras 更新时间:8/28/2023 访问量:54

问:

我有时间问题。时间由 gin 解析。

我正在发送:

curl --location 'http://127.0.0.1:5000/v1/search/?from=2023-08-25T17:00:00+03:00'

我的函数和结构是:

type Filters struct {
    From   time.Time `form:"from" binding:"required,gte" time_format:"2006-01-02T15:04:05Z07:00" json:"from"`
}

func Search(c *gin.Context) {
    t := time.Now()
    filters := Filters{}

    if err := c.ShouldBindWith(&filters, binding.Query); err != nil {
        log.Infof("Filter parameter error => %s", err.Error())
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
// More code
}

错误消息表明解析输入的时区部分存在问题,但我不明白为什么。

{
    "error": "parsing time \"2023-08-25T17:00:00 03:00\" as \"2006-01-02T15:04:05Z07:00\": cannot parse \" 03:00\" as \"Z07:00\""
}
datetime 解析 go-gin

评论


答:

0赞 Quique Torras 8/26/2023 #1

问题源于 URL 编码。加号 (+) 在编码过程中丢失,导致其转换为空格字符。因此,解析器无法识别此格式并拒绝了它。