openwrt 运行golang 时候发现打印时间错误。golang读取时区的过程:

TZ/etc/localtime

所以我们可以设置/etc/localtime 的时区。但是/etc/localtime文件不是随便写的,需要符合一定的格式。所以安装时区文件:

opkg update
opkg install zoneinfo-asia

时区设置为上海:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

运行代码:

package main

import (
	"fmt"
	"syscall"
	"time"
)

func main() {
	t := time.Now().Format("2006-01-02 15:04:05")
	fmt.Println(t)
	fmt.Println(time.Local)
	tz, ok := syscall.Getenv("TZ")
	fmt.Println(tz,ok)
}

可以看到时间已经正确:

2022-05-02 22:42:28
Local
 false