From dea3c3d36a6187476f2dc495ff7a6f1a30812793 Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Sun, 4 Oct 2026 21:47:00 +0200 Subject: [PATCH] add parsing multiple time formats --- kontor-gin/internal/helpers/time.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/kontor-gin/internal/helpers/time.go b/kontor-gin/internal/helpers/time.go index a890ba6..cff44c3 100644 --- a/kontor-gin/internal/helpers/time.go +++ b/kontor-gin/internal/helpers/time.go @@ -2,6 +2,7 @@ package helpers import ( "encoding/json" + "fmt" "time" ) @@ -36,13 +37,16 @@ type KontorTime struct { time.Time } -const layout = "2006-01-02 15:04:05.000000" +var layouts = []string{ + "2006-01-02 15:04:05.000000", + "2006-01-02T15:04:05.000000Z", +} func (kt KontorTime) MarshalJSON() ([]byte, error) { if kt.IsZero() { return []byte("null"), nil } - return json.Marshal(kt.Format(layout)) + return json.Marshal(kt.Format(layouts[0])) } func (kt *KontorTime) UnmarshalJSON(b []byte) error { @@ -53,10 +57,12 @@ func (kt *KontorTime) UnmarshalJSON(b []byte) error { if s == "" { return nil } - t, err := time.Parse(layout, s) - if err != nil { - return err + for _, layout := range layouts { + t, err := time.Parse(layout, s) + if err == nil { + kt.Time = t + return nil + } } - kt.Time = t - return nil + return fmt.Errorf("failed to parse time from %s", s) }