package timex import ( "fmt" "time" ) func ParseTimeFlexible(value string) (time.Time, error) { if value == "" { return time.Time{}, fmt.Errorf("empty time string") } layouts := []string{ "2006-01-02 15:04:05", "2006-01-02 15:04", "2006-01-02", "2006-01", time.RFC3339, } var err error for _, layout := range layouts { var t time.Time t, err = time.Parse(layout, value) if err == nil { return t, nil } } return time.Time{}, fmt.Errorf("unsupported time format: %s", value) }