为了账号安全,请及时绑定邮箱和手机立即绑定

如何提取当前本地时间偏移的值?

如何提取当前本地时间偏移的值?

Go
ABOUTYOU 2021-12-07 15:19:02
我在尝试格式化和显示一些 IBM 大型机 TOD 时钟数据时有点挣扎。我想在格林威治标准时间和本地时间格式化数据(作为默认值 - 否则在用户指定的区域中)。为此,我需要从 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 mainimport ( "time"; "fmt" )func main() {    l, _ := time.LoadLocation("Local")    fmt.Printf("%v\n", l.zone.offset)}有没有简单的方法来获取这些信息?
查看完整描述

4 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

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


package main


import (

    "fmt"

    "time"

)


func main() {

    t := time.Now()

    zone, offset := t.Zone()

    fmt.Println(zone, offset)

}

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


查看完整回答
反对 回复 2021-12-07
?
弑天下

TA贡献1818条经验 获得超8个赞

打包时间

func (时间) 本地

func (t Time) Local() Time

Local 返回 t 并将位置设置为本地时间。

功能(时间)区

func (t Time) Zone() (name string, offset int)

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

输入位置

type Location struct {        
    // contains filtered or unexported fields
}

位置将时间瞬间映射到当时使用的区域。通常,位置表示地理区域中使用的时间偏移的集合,例如中欧的 CEST 和 CET。

var Local *Location = &localLoc

Local 表示系统的本地时区。

var UTC *Location = &utcLoc

UTC 表示世界协调时间 (UTC)。

func(时间)输入

func (t Time) In(loc *Location) Time

In 返回位置信息设置为 loc 的 t。

如果 loc 为零,则处于恐慌状态。


查看完整回答
反对 回复 2021-12-07
?
九州编程

TA贡献1785条经验 获得超4个赞

例如,


package main


import (

    "fmt"

    "time"

)


func main() {

    t := time.Now()


    // For a time t, offset in seconds east of UTC (GMT)

    _, offset := t.Local().Zone()

    fmt.Println(offset)


    // For a time t, format and display as UTC (GMT) and local times.

    fmt.Println(t.In(time.UTC))

    fmt.Println(t.In(time.Local))

}

输出:


-18000

2016-01-24 16:48:32.852638798 +0000 UTC

2016-01-24 11:48:32.852638798 -0500 EST


查看完整回答
反对 回复 2021-12-07
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我认为手动将时间转换为另一个 TZ 没有意义。使用time.Time.In函数:


package main


import (

    "fmt"

    "time"

)


func printTime(t time.Time) {

    zone, offset := t.Zone()

    fmt.Println(t.Format(time.Kitchen), "Zone:", zone, "Offset UTC:", offset)

}


func main() {

    printTime(time.Now())

    printTime(time.Now().UTC())


    loc, _ := time.LoadLocation("America/New_York")

    printTime(time.Now().In(loc))

}


查看完整回答
反对 回复 2021-12-07
  • 4 回答
  • 0 关注
  • 279 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信