go 数据库时间处理

type LocalTime struct {
    time.Time
}

func (t LocalTime) MarshalJSON() ([]byte, error) {
    //格式化秒
    // seconds := t.Unix()
    // return []byte(strconv.FormatInt(seconds, 10)), nil

    formatted := fmt.Sprintf("\"%v\"", time.Time(t.Time).Format("2006-01-02 15:04:05"))
    return []byte(formatted), nil
}

func (t LocalTime) Value() (driver.Value, error) {
    var zeroTime time.Time
    if t.Time.UnixNano() == zeroTime.UnixNano() {
        return nil, nil
    }
    return t.Time, nil
}

func (t *LocalTime) Scan(v interface{}) error {
    value, ok := v.(time.Time)
    if ok {
        *t = LocalTime{Time: value}
        return nil
    }
    return fmt.Errorf("can not convert %v to timestamp", v)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容