From c77264f85a5a3c24585b7c3f6592d5fd1404545b Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Mon, 17 Feb 2020 15:09:33 -0700 Subject: [PATCH] Attempt to figure out date if not given for TIME --- arg.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arg.go b/arg.go index c9f3f76..85a99e1 100755 --- a/arg.go +++ b/arg.go @@ -2,6 +2,7 @@ package args import ( "fmt" + "math" "strconv" "strings" "time" @@ -168,6 +169,10 @@ func (a *Arg) Set(value interface{}) error { "06-01-02", "06/01/02", "2006-01-02 15:04:05.999999999 -0700 MST", + "15:04:05.999999999 -0700 MST", + "15:04:05 -0700 MST", + "15:04 -0700 MST", + "15:04", } for k := range layouts { if j, err = time.Parse(layouts[k], s); err == nil { @@ -176,6 +181,19 @@ func (a *Arg) Set(value interface{}) error { break } } + if err == nil && s != "" { + j, _ := a.Value.(time.Time) + if j.Year() < 1980 { + n := time.Now() + j = j.AddDate(n.Year()-j.Year(), int(n.Month()-j.Month()), n.Day()-j.Day()) + j = j.In(time.Local) + t := time.Date(2000, 02, 02, 12, 02, 02, 02, time.UTC) + l := t.Local() + tzDiff := int(math.Abs(float64(t.Hour() - l.Hour()))) + j = j.Add(time.Hour * time.Duration(tzDiff)) + } + a.Value = j + } } case FLOAT: if i, ok := value.(float32); ok {