// Package models 模型通用属性和方法package models
import("database/sql/driver""fmt""time")// JSONTime format json time field by myselftype JSONTime struct{
time.Time
}// MarshalJSON on JSONTime format Time field with %Y-%m-%d %H:%M:%Sfunc(t JSONTime)MarshalJSON()([]byte,error){
formatted := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))return[]byte(formatted),nil}// Value insert timestamp into mysql need this function.func(t JSONTime)Value()(driver.Value,error){var zeroTime time.Time
if t.Time.UnixNano()== zeroTime.UnixNano(){returnnil,nil}return t.Time,nil}// Scan valueof time.Timefunc(t *JSONTime)Scan(v interface{})error{
value, ok := v.(time.Time)if ok {*t = JSONTime{Time: value}returnnil}return fmt.Errorf("can not convert %v to timestamp", v)}// New on JSONTime format Time field with %Y-%m-%d %H:%M:%Sfunc(t JSONTime)New() JSONTime {return JSONTime{Time: time.Now()}}
我个人一直在使用的更加优雅的做法,参见下文:
app/models/model.go
app/models/model_time.go(该文件请自行创建)
可解决模型的统一自定义时间显示和数据库插入,仅供参考。