gorm查询时间去掉时区问题
gorm查询的时间格式是2022-03-03T14:32:05+08:00,这种格式不符合我们日常使用习惯,尤其是前端展示会额外占用单元格宽度
gorm不提供时间格式的配置,只能自定义个一个类型,继承time.Time,上代码,这个是网上一搜一堆的代码,没啥可以说的
package utils import ( "database/sql/driver" "fmt" "time" ) // 1. 创建 time.Time 类型的副本 XTime; type MyTime struct { time.Time } // 2. 为 Xtime 重写 MarshaJSON 方法,在此方法中实现自定义格式的转换; func (t MyTime) MarshalJSON() ([]byte, error) { output := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05")) return []byte(output), nil } // 3. 为 Xtime 实现 Value 方法,写入数据库时会调用该方法将自定义时间类型转换并写入数据库; func (t MyTime) Value() (driver.Value, error) { var zeroTime time.Time if t.Time.UnixNano() == zeroTime.UnixNano() { return nil, nil } return t.Time, nil } // 4. 为 Xtime 实现 Scan 方法,读取数据库时会调用该方法将时间数据转换成自定义时间类型; func (t *MyTime) Scan(v interface{}) error { value, ok := v.(time.Time) if ok { *t = MyTime{Time: value} return nil } return fmt.Errorf("can not convert %v to timestamp", v) }
下面就是我们怎么在代码里使用:
1、utils.MyTime{Time: time.Now()} 初始化当前的时间就是time.Now()
2、utils.MyTime{Time: scriptResult.Info.ExecTime} 将time.Time类型转成utils.MyTime类型
3、utils.MyTime时间变量后面加.Time,可以转换成time.Time类型(但是这个时间会带有时区)
通往牛逼的路上,在意的只有远方!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗