30 lines
476 B
Go
30 lines
476 B
Go
package timex
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func ParseTimeFlexible(value string) (*time.Time, error) {
|
|
if value == "" {
|
|
return nil, nil // ⭐ 空字符串 → 不限时间
|
|
}
|
|
|
|
layouts := []string{
|
|
"2006-01-02 15:04:05",
|
|
"2006-01-02 15:04",
|
|
"2006-01-02",
|
|
"2006-01",
|
|
time.RFC3339,
|
|
}
|
|
|
|
for _, layout := range layouts {
|
|
t, err := time.Parse(layout, value)
|
|
if err == nil {
|
|
return &t, nil
|
|
}
|
|
}
|
|
|
|
return nil, fmt.Errorf("unsupported time format: %s", value)
|
|
}
|