初學 GoLang 遇到的一個關於時間的坑...

邪惡的咖啡發表於2020-04-03

首先,我原來一直是寫PHP的,關於時間的處理一般都是用Carbon
比如Laravel插入一張文章表,在資料庫沒建立索引的時候直接使用ORM的create方法即可自動儲存updated_atcreated_at欄位,這是因為Laravel的特性在處理
即便PHP原生程式碼對時間的操作也僅僅使用date('y-m-d H:i:s')就能儲存到資料庫,而且一般來說不會有什麼需要處理的問題。
PHP果然是世界上最好的語言:joy:

在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連線池程式碼的確解決了

初學GoLang遇到的一個關於時間的坑...

真是被我自己蠢哭了…

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章