我想检索我的系统的时区位置
t = time.Now()
tzLoc = t.Location().String()
tzLoc作为CCD_ 1返回。
我已经检查了time
包的源代码。根据源代码,如果未设置TZ
,则引用/etc/localtime
。
未设置TZ
环境变量,下面是我的系统上的/etc/localtime
lrwxrwxrwx. 1 root root 38 Jan 16 06:33 /etc/localtime -> ../usr/share/zoneinfo/America/New_York
理想情况下,time
包应该返回America/New_York
,但它仍然以Local
的形式返回
如何将时区位置获取为"Local"
0?
Golang行为是正确的,在更改TZ
环境变量后,您应该能够看到您期望的结果。我已经在Golang docker容器中运行了它,它打印出America/Los_Angeles
。在您的终端中,请重新定义您的时区,如下所示:
~$: export TZ=America/Los_Angeles
这也是一个Docker实现:
Dockerfile:
FROM golang:1.13.8-alpine3.11
RUN apk update
ENV GO111MODULE=on
WORKDIR /app
ENV TZ=America/Los_Angeles
你可以构建dockerfile并按照以下方式运行它:
~$: docker build -t stackquestion:1.0 .
~$: docker run --rm -it stackquestion:1.0 sh
时区.go
import (
"fmt"
"time"
)
func main() {
tzLoc := time.Now().Location().String()
fmt.Println(tzLoc)
}
当你运行代码时,你应该得到:
/app # go run timezone.go
America/Los_Angeles