猿问

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

我在尝试格式化和显示一些 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 main

import ( "time"; "fmt" )


func main() {

    l, _ := time.LoadLocation("Local")

    fmt.Printf("%v\n", l.zone.offset)

}

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


ABOUTYOU
浏览 280回答 4
4回答

POPMUISE

您可以在时间类型上使用 Zone() 方法:package mainimport (    "fmt"    "time")func main() {    t := time.Now()    zone, offset := t.Zone()    fmt.Println(zone, offset)}Zone 计算在时间 t 生效的时区,返回区域的缩写名称(例如“CET”)及其在 UTC 以东的秒数中的偏移量。

弑天下

打包时间func (时间) 本地func (t Time) Local() TimeLocal 返回 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 = &localLocLocal 表示系统的本地时区。var UTC *Location = &utcLocUTC 表示世界协调时间 (UTC)。func(时间)输入func (t Time) In(loc *Location) TimeIn 返回位置信息设置为 loc 的 t。如果 loc 为零,则处于恐慌状态。

九州编程

例如,package mainimport (    "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))}输出:-180002016-01-24 16:48:32.852638798 +0000 UTC2016-01-24 11:48:32.852638798 -0500 EST

慕工程0101907

我认为手动将时间转换为另一个 TZ 没有意义。使用time.Time.In函数:package mainimport (    "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))}
随时随地看视频慕课网APP

相关分类

Go
我要回答