package utils import ( "fmt" "time" "github.com/spf13/cast" ) var parseLayouts = []string{ "2006-01-02 15:04:05", "2006-1-2 15:04:05", "2006-1-2 15:4:5", "2006/01/02 15:04:05", "2006/1/2 15:04:05", "2006/1/2 15:4:5", "2006年01月02日 15时04分05秒", "2006年1月2日 15时04分05秒", "2006年1月2日 15时4分5秒", "2006年01月02日 15时04分", "2006年1月2日 15时04分", "2006年1月2日 15时4分", "2006年01月02日 15:04:05", "2006年1月2日 15:04:05", "2006年1月2日 15:4:5", } func ToDateE(v interface{}) (time.Time, error) { beijing, _ := time.LoadLocation("Asia/Shanghai") for _, layout := range parseLayouts { if t, err := time.ParseInLocation(layout, cast.ToString(v), beijing); err == nil { return t, nil } } if t, err := cast.ToTimeE(v); err == nil { return t, nil } return time.Time{}, fmt.Errorf("不能被识别的时间%s", cast.ToString(v)) }