time 時間包
2006-01-02 15:04:05-0700是一串go獨特神奇的對應順序。可以看time/format.go
2006-01-02 15:04:05-0700是一串go獨特神奇的對應順序。
2006-01-02 15:04:05-0700 對應到 yyyy-MM-dd HH:mm:ss Z
記憶順序有點像是06代表年,後面則是1,2,3,4,5,7
time/format.go 了解更多alias寫法(01或1...)
golang 與java time的對照表 瞭解與java的不同
時間的轉換
case1:時間戳轉換成時間
case2:將時間做格式化輸出 layout1 := "2006-01-02T15:04:05" t.Format(layout1)
case3:時區轉換: FixedZone(name,位移的秒數),可以自訂時區命名信息,loc := time.FixedZone(“UTC-8”, -8 * 60 * 60)第二個參數轉移多少秒,可以改+8時區等等
case4:時區轉換:
LoadLocation(name),可以輸入空值,”UTC”,”Local”,或是時區的資料庫 EX: “Asia/Taipei”,命名使用的資料庫為IANA Time Zone database
好處是不用自己輸入到底是+8還加多久,知道時區命名就好,但是背後的定義還是會依下列順序去找尋對應資料:
ZONEINFO 環境變數所指定的zip文件
Unix系统中已经安装的
$GOROOT/lib/time/zoneinfo.zip
因此如果在windows系统上,没有安装go語言環境,time.LoadLocation會失敗,建議用time.FixedZone。
另外在docker環境裡也要注意使用的image是否已經有包含這些資料,否則會出現unknown time zone XXXX的錯誤,解決方法需要加入以下設定
範例程式:
後記:
为了方便,Go1.17 增加加了 Time.UnixMilli 方法,返回 Unix 时间戳的毫秒数
Last updated