英文:
Get given timezone timestamp
问题
我正在玩时区,并注意到一些奇怪的事情。
我目前处于BST时区,比GMT提前一个小时。
now := time.Now()
location, _ := time.LoadLocation("Atlantic/Cape_Verde")
timeAtZone := now.In(location)
fmt.Println(timeAtZone)
timestamp = timeAtZone.Unix()
fmt.Println(timestamp)
fmt.Println(now.Add(-time.Hour).UTC().Unix())
fmt.Println(now.UTC().Unix())
你会注意到时间戳是BST我的当前时区的时间戳。
如何获取GMT的时间戳?
http://play.golang.org/p/oq0IRYa0h7
英文:
I am playing around with timezone and noticed something wierd.
I am currently in the BST timezone which is an hour ahead of GMT.
now := time.Now()
location, _ := time.LoadLocation("Atlantic/Cape_Verde")
timeAtZone := now.In(location)
fmt.Println(timeAtZone)
timestamp = timeAtZone.Unix()
fmt.Println(timestamp)
fmt.Println(now.Add(-time.Hour).UTC().Unix())
fmt.Println(now.UTC().Unix())
You will notice that the timestamp is that of BST my current timezone.
How do I get the timestamp of GMT???
答案1
得分: 8
Unix时间是绝对的。没有"BST Unix时间"。没有"Atlantic/Cape_Verde Unix时间"。只有Unix时间。它是从特定时刻(协调世界时(UTC)1970年1月1日星期四00:00:00,不计闰秒)以来的秒数。
时区与时间的表示有关,而不是时间本身。对于你和我来说,不管我们在世界的哪个地方(暂且不考虑爱因斯坦),这一刻都是相同的。我们只是碰巧称呼这个时刻的方式不同。在*Time
上设置位置只是指示您希望如何显示时间。因此,如果您所说的"时间戳"是指"表示时间的字符串",您可以使用time.Now().UTC().String()
获取UTC时间戳。
英文:
Unix time is absolute. There is no "BST Unix time." There is no "Atlantic/Cape_Verde" Unix time." There is only Unix time. It is the number of seconds since a specific moment (00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970, not counting leap seconds).
Time zones are related to the representation of time, not time itself. It is the same moment for you as it is for me, wherever we are in the world (leaving Einstein aside for the moment). We just happen to call that moment different things. Setting the location on a *Time
just indicates how you would like to display the time. So if by "timestamp" you mean "string representing the time," you can get the UTC timestamp with time.Now().UTC().String()
.
答案2
得分: 1
请确保您检查了错误,我假设它告诉您存在问题。
您是否检查了:http://golang.org/pkg/time/#LoadLocation
您的时区是否在:$GOROOT/lib/time/zoneinfo.zip 中?
对于我来说:
time.LoadLocation("CDT") // 我的时区
time.LoadLocation("CST")
两者都会导致错误。
要获取我的时区,我必须执行:
time.LoadLocation("America/Chicago")
请确保 f.Timezone 是有效的。
英文:
Make sure you check your errors, I assume it's telling you there's an issue.
Have you checked: http://golang.org/pkg/time/#LoadLocation
Is your timezone in: $GOROOT/lib/time/zoneinfo.zip?
For me:
time.LoadLocation("CDT") // my time zone
time.LoadLocation("CST")
Both result in an error.
To get my time zone, I must do:
time.LoadLocation("America/Chicago")
Make sure f.Timezone is valid.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论