解析DateTime Go Gin

mbzjlibv  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(145)

我对时间有问题。时间被杜松子酒解析。
我发送:

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\""
}
ia2d9nvy

ia2d9nvy1#

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

相关问题