关于我
go语言的time.Now()返回的是当地时区时间
time.Now().Format("2006-01-02 15:04:05")
time设置自定义时区
var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海
fmt.Println("SH : ", time.Now().In(cstSh).Format("2006-01-02 15:04:05"))
LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。所以如果windows系统没有安装go环境,调用LoadLocation就会报错。
当前解决方法也有:
1、我们可以自己把tzdata文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。
文件目录可以通过环境变量设置,在main方法中:
os.Setenv("ZONEINFO", '/home/tz/data.zip')
然后再调用 LoadLocation 方法就可以了。
2、使用时区方式
推荐方式
var cstZone = time.FixedZone("CST", 8*3600) // 东八区
fmt.Println("SH : ", time.Now().In(cstZone).Format("2006-01-02 15:04:05"))
全局设置
如果说要设置全局的time时区配置应该如何做?
main.go(主函数处)增加一个初始化方法
func initInMain() {
var cstZone = time.FixedZone("CST", 8*3600) // 东八
time.Local = cstZone
}
将定义的时区实例赋值给time.Local
推荐阅读
最后
本文到此结束,希望对你有帮助 😃
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
更多精彩技术文章汇总在我的 公众号【程序员工具集]】,持续更新,欢迎关注订阅收藏
版权声明:本文为HapplyFox原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。