gpt4 book ai didi

Golang gorilla 从表单中解析特定格式的日期

转载 作者:行者123 更新时间:2023-12-02 19:41:20 25 4
gpt4 key购买 nike

我从表格中收到日期。该日期具有特定格式“dd/mm/yyyy”。

为了将其解析为我的结构,我使用 gorilla/schema 包,但该包无法将接收到的数据识别为日期。

我如何解析日期并将其放入正确的结构中?作为字段,其格式为“01/02/2006”

我的实现:

type User struct {
Date time.Time `schema:"date"`
}


func MyRoute(w http.ResponseWriter, r *http.Request) {
user := User{}
r.ParseForm()
defer r.Body.Close()

decoder := schema.NewDecoder()
if err := decoder.Decode(&user, r.Form); err != nil {
fmt.Println(err)
}
.......................
}

最佳答案

我还没有测试这个答案,因为我没有时间建立一个例子,但根据这个:http://www.gorillatoolkit.org/pkg/schema

The supported field types in the destination struct are:

  • bool
  • float variants (float32, float64)
  • int variants (int, int8, int16, int32, int64)
  • string
  • uint variants (uint, uint8, uint16, uint32, uint64)
  • struct
  • a pointer to one of the above types
  • a slice or a pointer to a slice of one of the above types

Non-supported types are simply ignored, however custom types can be registered to be converted.

所以你需要说:

var timeConverter = func(value string) reflect.Value {
if v, err := time.Parse("02/01/2006", value); err == nil {
return reflect.ValueOf(v)
}
return reflect.Value{} // this is the same as the private const invalidType
}

func MyRoute(w http.ResponseWriter, r *http.Request) {
user := User{}
r.ParseForm()
defer r.Body.Close()
decoder := schema.NewDecoder()
decoder.RegisterConverter(time.Time{}, timeConverter)

if err := decoder.Decode(&user, r.Form); err != nil {
fmt.Println(err)
}
}

参见:https://github.com/gorilla/schema/blob/master/decoder.go

关于Golang gorilla 从表单中解析特定格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49285635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com