Go语言如何将日期时间的时区格式化为IANA标准时区格式
Go标准库的time.Format方法没有提供对应占位符直接输出IANA格式的时区标识符,需要单独获取时区对象的标识符后与格式化后的时间字符串拼接,实现方案如下:
实现代码
package main import ( "fmt" "time" ) func main() { // 加载目标IANA时区 loc, err := time.LoadLocation("Europe/London") if err != nil { // 生产环境请根据实际情况处理错误,此处仅做示例 panic(err) } // 将当前时间转换到目标时区 targetTime := time.Now().In(loc) // 格式化时间主体后拼接时区标识符 formatted := fmt.Sprintf("%s %s", targetTime.Format("2 Jan 2006 03:04:05PM"), loc.String()) fmt.Println(formatted) }
运行后即可输出符合要求的结果:
26 Nov 2021 04:00:31PM Europe/London
补充说明
如果不需要固定指定时区,想要直接使用运行环境的本地时区的IANA标识符,可直接简化为:
now := time.Now() formatted := fmt.Sprintf("%s %s", now.Format("2 Jan 2006 03:04:05PM"), now.Location().String())
注意:部分精简操作系统、老旧Windows版本可能未内置IANA时区数据库,此时LoadLocation会报错,可通过在编译时引入time/tzdata包内嵌时区数据库解决。
内容的提问来源于stack exchange,提问作者Arvind Kumar Avinash
相关产品推荐
相关产品推荐

