Go之time的时区

在验证一些时间的时候经常会发现少了8小时,那么可能会是时区的问题导致的
go的time库中提供了location的两个时区local和utc
local表示当前系统的时区,utc表示通用协调时间也就是零时区,time默认了是utc时区
我们可以通过time提供的loadlocation去切换时区
如果传入name是空或者utc那么返回utc,如果传入的name是Local那么返回当前的本地时区Local,否则name应该是IANA时区数据库中记录的地点名,在不同的约定路径尽可能地查找所需的数据库

func LoadLocation(name string) (*Location, error)
package main

import (
	"log"
	"time"
)

func main() {
	location,_ := time.LoadLocation("Asia/Shanghai")
	inputTime := "2029-09-04 12:04:05"
	layout := "2006-01-02 15:04:05"
	//parse如果没有传入固定的时区 那么默认返回utc 虽然我们之前传入了时区,这里的时候需要我们传参的时候就要传入时区比如使用ParseInLocation就可以解决
	t ,_ := time.Parse(layout,inputTime)
	datatime := time.Unix(t.Unix(),0).In(location).Format(layout)
	log.Printf("输入时间 %s, 输出时间%s",inputTime,datatime)
	t ,_ = time.ParseInLocation(layout,inputTime,location)
	datatime = time.Unix(t.Unix(),0).In(location).Format(layout)
	log.Printf("输入时间 %s, 输出时间%s",inputTime,datatime)
}

在这里插入图片描述
参考时间的格式
2006-01-02 15:04:05

Jan 2 15:04:05 2006 MST
1 2 3 4 5 6 -7

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/107550746
今日推荐