37 lines
802 B
Go
37 lines
802 B
Go
package time
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
type Time time.Time
|
|
|
|
const (
|
|
timeFormat = "2006-01-02 15:04:05"
|
|
)
|
|
|
|
func (t *Time) String() string {
|
|
return fmt.Sprintf("%s", time.Time(*t).Format(timeFormat))
|
|
}
|
|
|
|
// MarshalJSON on Json Time format Time field with %Y-%m-%d %H:%M:%S
|
|
func (t *Time) MarshalJSON() ([]byte, error) {
|
|
// 重写time转换成json之后的格式
|
|
var tmp = fmt.Sprintf("\"%s\"", t.String())
|
|
return []byte(tmp), nil
|
|
}
|
|
|
|
func (t *Time) UnmarshalJSON(data []byte) error {
|
|
// Ignore null, like in the main JSON package.
|
|
if string(data) == "null" {
|
|
return nil
|
|
}
|
|
// Fractional seconds are handled implicitly by Parse.
|
|
var err error
|
|
loc, _ := time.LoadLocation("Asia/Shanghai")
|
|
rawT, err := time.ParseInLocation(`"`+timeFormat+`"`, string(data), loc)
|
|
*t = Time(rawT)
|
|
return err
|
|
}
|