### **時間序列化與反序列化**
```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
}
```