go模型时间格式

中山桥一霸
  • 17

模型从数据库里拿出来的格式是`1993-01-01T20:08:23.000000028+08:00`,怎么转成`1993-01-01 20:08:23`这种格式

回复
阅读 1.9k
4 个回答

Format方法
例如:
time.Now().Format("2006-01-02 15:04:05"))
输出为:2020-07-07 09:30:06

莫名其妙被踩一下, 如果你用 ORM 不想写sql , 还想要时间格式化,就自己重写 time.Time 自定义 序列化方法,不嫌麻烦就自己写 ,网上各种博客一堆这种方法,弊端也有自己体会,懒得说
不用 ORM 使用 sql 直接 调数据库 内置函数 格式化时间输出就好, sqlx 也可以直接映射 查询结果到结构体, 不需要一个一个 scan, 用起来跟 orm 没啥区别还更灵活,支持复杂查询, ORM 应付简单的查询可以, 复杂的就是自己给自己喂屎, orm拿来做自动迁移表和简单查询就行

如果你的问题不是 上述的问题, 只是你想 格式化时间, 那么看楼上的回答,就是go的基础问题

不想说啥,莫名其妙被扣两分,服了, 最后 go的orm 没有Java那么牛逼,很弱鸡,能明白就明白吧,无所谓了

此回答不会再更新

============== 原回答 ================

如果是ORM中的时间,那没啥好办法, 建议交给前端处理. 或者放弃使用 orm
这里推荐一波 sqlx ,完全兼容官方库的 database/sql 并且支持查询结果直接映射到结构体,
只是需要手写sql查询而已 ,很方便了...

你这个应该是 RFC3339Nano layout, 可以用下面的方法:

str := "1993-01-01T20:08:23.000000028+08:00"
t, _ := time.Parse(time.RFC3339Nano, str)
fmt.Println(t.Format("2006-01-02 15:04:05"))

自己封装一个就好了

//DateRFCChange format := time.RFC3339 dateFormat := "2006-01-02 15:04:05"  inDate := "2020-02-06T17:21:06+08:00"
func DateRFCChange(format, dateFormat, inDate string) string {
    t1, e := time.Parse(
        format,
        inDate)
    if e != nil {
        fmt.Println(e)
    }
    return t1.Format(dateFormat)
}
宣传栏