登录
首页 >  Golang >  Go问答

即使 /etc/localtime 正确,time.Location()也会返回“Local”

来源:stackoverflow

时间:2024-04-14 18:54:34 207浏览 收藏

大家好,我们又见面了啊~本文《即使 /etc/localtime 正确,time.Location()也会返回“Local”》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

我想检索我的系统的时区位置

t = time.now()
tzloc = t.location().string()

tzloc 返回为 "local"

我检查了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

我应该如何获取时区位置 america/new_york


解决方案


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

今天关于《即使 /etc/localtime 正确,time.Location()也会返回“Local”》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>