背景: 最近接手了前同事的一个项目,项目交接后前辈提交了一些积压在自己分支的代码,并做了一次线上发布。版本发布后用户反馈,数据统计分析模块时间怎么是 2006-01-02 ?针对用户的报障,我这边首先做了线上回...

背景:
最近接手了前同事的一个项目,项目交接后前辈提交了一些积压在自己分支的代码,并做了一次线上发布。版本发布后用户反馈,数据统计分析模块时间怎么是 2006-01-02 ?针对用户的报障,我这边首先做了线上回滚,接着开始了排障之旅...
排障思路:
2006-01-02 这个时间格式对于使用 Go 的同学是不陌生的,此处事出反常必有妖...
1,查看项目代码, XXDate.Format("2006-01-02") ,按照通常使用的 Golang/time 的时间格式化方式,在 XXDate 数据正常的情况下是不会出现问题的;
2,查看 XXDate 的类型,定义的是 gtime.Time 而非 time.Time,查看 gtime.Time 的定义,从定义上看类型是没有问题的;
1 // Time is a wrapper for time.Time for additional features. 2 type Time struct { 3 wrapper 4 }
1 // wrapper is a wrapper for stdlib struct time.Time. 2 // It's used for overwriting some functions of time.Time, for example: String. 3 type wrapper struct { 4 time.Time 5 }
3,开启 Debug 模式,打印出 XXDate 的值 2020-12-01 00:00:00 ,验证了 2 中的值确实没有问题;
4,那问题就应该出现在 .Format 方法上,查看 gtime.Format 方法源码发现确实与 time.Format 不一样
本文标题为:【Golang】GoFrame/gtime 模块使用踩坑小结


基础教程推荐
- Go web部署报错panic: listen tcp xxxxxxx:8090: bind: cannot assign requested address 2023-09-05
- swift版webview加载网页进度条效果 2023-07-05
- R包ggtreeExtra绘制进化树 2022-12-14
- R语言数可视化Split violin plot小提琴图绘制方法 2022-12-10
- R语言基于Keras的MLP神经网络及环境搭建 2022-12-10
- swift 字符串String的使用方法 2023-07-05
- ruby-on-rails-使用Nginx的Rails的多阶段环境 2023-09-21
- R语言-如何将科学计数法表示的数字转化为文本 2022-11-23
- UEFI开发基础HII代码示例 2023-07-07
- asm基础——汇编指令之in/out指令 2023-07-06