4 回答
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 以东的秒数中的偏移量。
TA贡献1818条经验 获得超8个赞
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 (t Time) In(loc *Location) Time
In 返回位置信息设置为 loc 的 t。
如果 loc 为零,则处于恐慌状态。
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
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))
}
- 4 回答
- 0 关注
- 279 浏览
添加回答
举报