案例:
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
loc, _ := time.LoadLocation("Asia/Shanghai")
Layout := "2006-01-02 15:04:05"
seconds, _ := strconv.ParseUint("1555052942", 10, 64)
s := time.Unix(int64(seconds), 0).Format(Layout)
tt, _ := time.ParseInLocation(Layout, s, loc)
fmt.Println(tt.Format(Layout))
}
本机执行结果:2019-04-12 15:09:02
容器内执行结果:2019-04-12 07:09:02
两个结果相差8小时,原因是docker默认使用UTC时间。
解决方案:
在Dockerfile里面添加如下两条命令,重新构建,即可永久生效。
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone