美文网首页
beego orm 时间格式问题

beego orm 时间格式问题

作者: Mr_dreamer | 来源:发表于2020-02-18 21:51 被阅读0次

    beego 的orm 结构体中时间如果用的是 time.Time 类似于下面这样

    Create_time time.Time `orm:"auto_now_add;type(datetime)" form:"-"`
    Update_time time.Time `orm:"auto_now;type(datetime)"`
    

    那么在前端渲染时拿到的数据就会是类似2014-07-07T23:58:28+08:00 这种,显然不是通常的显示形式。如果想要拿到2014-07-07 23:58:28这样的形式该怎么办呢?
    经过一同搜索之后,仍然没发现什么好办法能直接拿到想要的格式,我说一下大家说的最多的两种方案。
    一种是修改/usr/local/go/src/time/time.go源码(复制别人的代码 没有测试)

    
    // MarshalJSON implements the json.Marshaler interface.
    // The time is a quoted string in RFC 3339 format, with sub-second precision added if present.
    func (t Time) MarshalJSON2() ([]byte, error) {
    if y := t.Year(); y < 0 || y >= 10000 {
    // RFC 3339 is clear that years are 4 digits exactly.
    // See golang.org/issue/4556#c15 for more discussion.
    return nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")
    }
    
    b := make([]byte, 0, len(RFC3339Nano)+2)
    b = append(b, '"')
    b = t.AppendFormat(b, RFC3339Nano)
    b = append(b, '"')
    return b, nil
    }
    func (t Time) MarshalJSON() ([]byte, error) {
    if y := t.Year(); y < 0 || y >= 10000 {
    // RFC 3339 is clear that years are 4 digits exactly.
    // See golang.org/issue/4556#c15 for more discussion.
    return nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")
    }
    
    b := make([]byte, 0, len("2006-01-02 15:04:05")+2)
    b = append(b, '"')
    b = t.AppendFormat(b, "2006-01-02 15:04:05")
    b = append(b, '"')
    return b, nil
    }
    

    第二种和第一种其实差不多 只不过是在你的结构体中实现 MarshalJSONUnmarshalJson 或者自定义一种类型重写time

    但是这两种我都不太喜欢,所以我直接在模板中进行格式化

    {{.Create_time.Format "2006-01-02 15:04:05"}}
    

    参考文章:
    https://github.com/astaxie/beego/issues/686
    https://studygolang.com/articles/11685
    https://blog.csdn.net/wo541075754/article/details/79513484
    https://www.jianshu.com/p/5250ef0954b7

    相关文章

      网友评论

          本文标题:beego orm 时间格式问题

          本文链接:https://www.haomeiwen.com/subject/fwinfhtx.html