32 lines
667 B
Go
32 lines
667 B
Go
|
package time
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type Time time.Time
|
||
|
|
||
|
const (
|
||
|
timeFormat = "2006-01-02 15:04:05"
|
||
|
)
|
||
|
|
||
|
// 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\"", time.Time(*t).Format(timeFormat))
|
||
|
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
|
||
|
rawT, err := time.Parse(`"`+timeFormat+`"`, string(data))
|
||
|
*t = Time(rawT)
|
||
|
return err
|
||
|
}
|