1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-22 18:50:54 +00:00

Parse form time by its length

Fix #2451

Signed-off-by: Guohua Ouyang <guohuaouyang@gmail.com>
This commit is contained in:
Guohua Ouyang 2017-02-27 14:43:16 +08:00
parent 1d49a4bcbd
commit 49fffe3ebe

View File

@ -26,6 +26,12 @@ import (
"time" "time"
) )
const (
formatTime = "15:04:05"
formatDate = "2006-01-02"
formatDateTime = "2006-01-02 15:04:05"
)
// Substr returns the substr from start to length. // Substr returns the substr from start to length.
func Substr(s string, start, length int) string { func Substr(s string, start, length int) string {
bt := []rune(s) bt := []rune(s)
@ -352,11 +358,25 @@ func parseFormToStruct(form url.Values, objT reflect.Type, objV reflect.Value) e
case reflect.Struct: case reflect.Struct:
switch fieldT.Type.String() { switch fieldT.Type.String() {
case "time.Time": case "time.Time":
format := time.RFC3339 var (
if len(tags) > 1 { t time.Time
format = tags[1] err error
)
if len(value) >= 19 {
value = value[:19]
t, err = time.ParseInLocation(formatDateTime, value, time.Local)
} else if len(value) >= 10 {
if len(value) > 10 {
value = value[:10]
} }
t, err := time.ParseInLocation(format, value, time.Local) t, err = time.ParseInLocation(formatDate, value, time.Local)
} else if len(value) >= 8 {
if len(value) > 8 {
value = value[:8]
}
t, err = time.ParseInLocation(formatTime, value, time.Local)
}
if err != nil { if err != nil {
return err return err
} }