31 lines
512 B
Go
31 lines
512 B
Go
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)
|
|
}
|