Golang大猩猩用表格中的特定格式解析日期

时间:2018-03-14 18:51:01

标签: go gorilla

我从表单收到日期。此日期具有特定格式“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)
  }
  .......................
}

2 个答案:

答案 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