一尘不染

在Go中,如何提取当前本地时间偏移的值?

go

我是Go的新手,我在尝试格式化和显示一些IBM大型机TOD时钟数据方面有些挣扎。我想同时在GMT和本地时间格式化数据(默认设置-否则在用户指定的区域中)。

为此,我需要从GMT获取本地时间偏移量的值,以秒为单位的有符号整数。

在zoneinfo.go(我承认我不太了解)中,我可以看到

// A zone represents a single time zone such as CEST or CET.
type zone struct {
    name   string // abbreviated name, "CET"
    offset int    // seconds east of UTC
    isDST  bool   // is this zone Daylight Savings Time?
}

但是,我认为这没有导出,因此此代码不起作用:

package main
import ( "time"; "fmt" )

func main() {
    l, _ := time.LoadLocation("Local")
    fmt.Printf("%v\n", l.zone.offset)
}

有没有简单的方法来获取此信息?


阅读 237

收藏
2020-07-02

共1个答案

一尘不染

您可以在时间类型上使用Zone()方法:

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    zone, offset := t.Zone()
    fmt.Println(zone, offset)
}

区域计算在时间t生效的时区,并返回该区域的缩写名称(例如“ CET”)及其在UTC以东的秒数内的偏移量。

2020-07-02