初学 GoLang 遇到的一个关于时间的坑...
首先,我原来一直是写PHP的,关于时间的处理一般都是用
Carbon
比如Laravel插入一张文章表,在数据库没建立索引的时候直接使用ORM的create
方法即可自动保存updated_at
和created_at
字段,这是因为Laravel的特性在处理
即便PHP原生代码对时间的操作也仅仅使用date('y-m-d H:i:s')
就能保存到数据库,而且一般来说不会有什么需要处理的问题。
PHP果然是世界上最好的语言
在GoLang中一般时间操作都依赖于time
包
在开发过程中踩了一个PHP从来没踩过的坑,下面是我记录日志的代码
_, _ = models.AddLoginLogs(&models.LoginLogs{
Username: admin.Username,
Type: 1,
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
})
这是Laravel迁移时生成的数据库,直接拿来用了
在运行这段代码后发现保存到数据库的值和实际时间不对,然后我再运行一遍。。。。。。在试一下。。。。。。???
我的第一反应是需要设置时区,然后习惯性的打开百度,得到了解决方式一
修改代码如下
loc, _:=time.LoadLocation("Asia/Shanghai")
_, _ = models.AddLoginLogs(&models.LoginLogs{
Username: admin.Username,
Type: 1,
CreatedAt: time.Now().In(loc),
UpdatedAt: time.Now().In(loc),
})
再次运行发现还是不对,各种百度仍然没有解决,快放弃时无意间发现一篇文章:文章链接
仔细对比一下还真是差了8小时,恍然大悟,然后修改了Mysql连接池代码的确解决了
真是被我自己蠢哭了…
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: