猿问

我应该如何从 API 获取字符串日期时间并将其解组为

我用来gin context获取 json 数据并将其转换为struct,它工作正常。但是我遇到的问题是用作time.Time其中一种字段类型:


type User struct {

    CreatedAt  time.Time `json:"created_at"`

}

在gin我使用ShouldBind:


  var user User

  if err := c.ShouldBind(&user); err != nil {

        c.JSON(200, g.H{})

        return

  }

我得到的错误是:


parsing time "2019-01-01T00:00:00" as "2006-01-02T15:04:05Z07:00": cannot parse "" as "Z07:00"

似乎需要时区段。我也给出了Z00:00但再次出现解析错误。


我如何才能datetime像“2022-01-01 20:00:00”一样将其转换为time.TimeGo 甚至时区?


慕姐8265434
浏览 113回答 1
1回答

子衿沉夜

func HandleTime(c *gin.Context) {    type User struct {        CreatedAt time.Time `json:"created_at" binding:"required" time_format:"2006-01-02T15:04:05Z07:00"`    }    var user User    fmt.Println(user.CreatedAt.String())    if err := c.ShouldBindJSON(&user); err != nil {        fmt.Println(err)        return    }    c.JSON(200, gin.H{        "created": user.CreatedAt.String(),    })}curl -X POST 'http://127.0.0.1:8092/${YOUR_PATH}' \-H 'Content-Type: application/json' -d '{    "created_at": "2019-01-01T01:00:09+08:00"}'回复:{    "created": "2019-01-01 01:00:09 +0800 CST"}在 go 文档中查看:https://pkg.go.dev/time@go1.18.4#example-Parse例如,RFC3339布局 2006-01-02T15:04:05Z07:00 包含 Z 和时区偏移量,以便处理两个有效选项:2006-01-02T15:04:05Z2006-01-02T15:04:05+07:00。
随时随地看视频慕课网APP

相关分类

Go
我要回答