From 324536d1c0ed75931bacecda50384ef50aa9a2dc Mon Sep 17 00:00:00 2001 From: allanwei Date: Mon, 22 Mar 2021 09:37:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- grmi/Date.go | 31 +++++++++++++++++++++++++++++++ grmi/grmi.go | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 grmi/Date.go diff --git a/grmi/Date.go b/grmi/Date.go new file mode 100644 index 0000000..b73e111 --- /dev/null +++ b/grmi/Date.go @@ -0,0 +1,31 @@ +package grmi + +import ( + "encoding/json" + "fmt" + "time" +) + +type Date time.Time + +func (self Date) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf("\"%s\"", time.Time(self).Format(URLDateFormat))), nil +} + +func (self *Date) UnmarshalJSON(data []byte) error { + var jsonString string + err := json.Unmarshal(data, &jsonString) + if err != nil { + return err + } + result, err := time.Parse(URLDateFormat, jsonString) + if err != nil { + return err + } + *self = Date(result) + return nil +} + +func (self *Date) Restore() time.Time { + return time.Time(*self) +} diff --git a/grmi/grmi.go b/grmi/grmi.go index 25c3fd3..e59f779 100644 --- a/grmi/grmi.go +++ b/grmi/grmi.go @@ -15,6 +15,7 @@ type GoType int const ( URLDateTimeFormat = "20060102150405" + URLDateFormat = "20060102" ) const ( @@ -30,6 +31,7 @@ const ( TypeUint64 TypeFloat32 TypeFloat64 + TypeDate TypeDateTime TypeBool TypeString