32 lines
770 B
Go
32 lines
770 B
Go
package helpers
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
var drawDateLayouts = []string{
|
|
time.RFC3339, // 2006-01-02T15:04:05Z07:00
|
|
"2006-01-02", // 2025-10-29
|
|
"2006-01-02 15:04", // 2025-10-29 20:30
|
|
"2006-01-02 15:04:05", // 2025-10-29 20:30:59
|
|
}
|
|
|
|
// ParseDrawDate tries multiple layouts and returns UTC.
|
|
func ParseDrawDate(s string) (time.Time, error) {
|
|
for _, l := range drawDateLayouts {
|
|
if t, err := time.ParseInLocation(l, s, time.Local); err == nil {
|
|
return t.UTC(), nil
|
|
}
|
|
}
|
|
return time.Time{}, fmt.Errorf("cannot parse draw date: %q", s)
|
|
}
|
|
|
|
// FormatDrawDate normalizes a time to the storage format you use in SQL (date only).
|
|
func FormatDrawDate(t time.Time) string {
|
|
if t.IsZero() {
|
|
return ""
|
|
}
|
|
return t.UTC().Format("2006-01-02")
|
|
}
|