### **时间序列化与反序列化**
```go
// 时间序列化和反序列化
var CSTZone = time.FixedZone("CST", 8*3600) // 固定东八区(CST: China Standard Time)
// JsonTime 自定义时间
// 设置当前时间: jsonDate := JsonTime(time.Now())
type JsonTime time.Time
// MarshalJSON JsonDate序列化
func (t JsonTime) MarshalJSON() ([]byte, error) {
b := make([]byte, 0, len("2006-01-02 15:04:05")+2)
b = append(b, '"')
b = time.Time(t).AppendFormat(b, "2006-01-02 15:04:05")
b = append(b, '"')
b = bytes.Trim(b, "\"")
if bytes.Equal(b, []byte("0001-01-01 00:00:00")) {
b = []byte("")
}
return b, nil
}
// UnmarshalJSON JsonDate反序列化
func (t *JsonTime) UnmarshalJSON(data []byte) error {
b := bytes.Trim(data, "\"") // 去除两端双引号
jDate, err := time.Parse("2006-01-02 15:04:05", string(b))
if err != nil {
return err
}
*t = JsonTime(jDate)
return nil
}
func (t *JsonTime) String() string {
stamp := time.Time(*t).Format("2006-01-02 15:04:05")
if stamp == "0001-01-01 00:00:00" {
return ""
}
return stamp
}
```