【问题标题】:How to load EST timezone properly with the correct daylight saving time UTC shift?如何使用正确的夏令时 UTC 偏移正确加载 EST 时区?
【发布时间】:2021-03-16 16:25:02
【问题描述】:

如何使用正确的夏令时 UTC 偏移正确加载 EST 时区?

package main

import (
    "log"
    "time"
)

func main() {
    log.SetFlags(log.Lshortfile | log.LstdFlags)
    const newYorkTimeZone = "EST"
    newYorkLoc, err := time.LoadLocation(newYorkTimeZone)
    if err != nil {
        log.Printf("error: %+v\n", err)
        return
    }
    ny := time.Now().In(newYorkLoc)
    log.Println("ny", ny)
    log.Println("utc", ny.UTC())
}

打印:

go run main.go
2021/03/16 19:12:54 main.go:17: ny 2021-03-16 11:12:54.472058 -0500 EST
2021/03/16 19:12:54 main.go:18: utc 2021-03-16 16:12:54.472058 +0000 UTC

因此它提供了 5 小时的 UTC 时间偏移。但我预计会是 4 小时,因为今天(2021 年 3 月 16 日)NY time zone difference with UTC 根据谷歌的说法是 4 小时。

【问题讨论】:

  • “EST”表示“东部标准时间”,即定义为夏令时。现在纽约是美国东部夏令时间 (EDT)。您是真的想要“东部标准时间”,还是“现在纽约的当地时间”?

标签: go time


【解决方案1】:

“EST”是东部标准时间,标准意思是“不是夏令时”。请改用位置。这考虑了基于该位置的夏令时。在这种情况下,请使用位置“America/New_York”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    相关资源
    最近更新 更多