为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕姐8265434 2023-02-14 18:27:30
我用来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 甚至时区?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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:05Z

2006-01-02T15:04:05+07:00。


查看完整回答
反对 回复 2023-02-14
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信