我从表单收到日期。此日期具有特定格式“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)
}
.......................
}
答案 0 :(得分:1)
我还没有测试过这个答案,因为我没有时间建立一个例子,但根据这个:http://www.gorillatoolkit.org/pkg/schema
目标结构中支持的字段类型是:
- BOOL
- 浮动变体(float32,float64)
- int variants(int,int8,int16,int32,int64)
- 字符串
- uint variants(uint,uint8,uint16,uint32,uint64)
- 结构
- 指向上述类型之一的指针
- 切片或指向上述类型之一的切片的指针
不支持的类型只是被忽略,但自定义类型可以 已注册转换。
所以你需要说:
-
请参阅:https://github.com/gorilla/schema/blob/master/decoder.go
答案 1 :(得分:-1)
实现Marshaler接口以在结构中以自定义日期格式编组json。
type CustomTime struct{
time.Time
}
func(timeFormat *CustomTime)UnmarshalJSON(date []byte) (err error){
layout := "2018-Mar-15";
dateString := string(date)
timeFormat.Time, err := time.Parse(layout, dateString)
return nil
}
type User struct {
date CustomTime
}
Golang实施UnMarshalJSON