写点什么

golang 设置时区的多种方式

用户头像
happlyfox
关注
发布于: 2021 年 03 月 24 日

关于我


文章首发 | 我的博客 | 欢迎关注


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 方法就可以了。


下载tzdata


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


推荐阅读


Redis工具收费后新的开源已出现


GitHub上Star最高的工程师技能图谱


中国程序员最容易发错的单词


推荐!!! Markdown图标索引网站


最后


本文到此结束,希望对你有帮助 😃


如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。


更多精彩技术文章汇总在我的 公众号【程序员工具集]】,持续更新,欢迎关注订阅收藏


发布于: 2021 年 03 月 24 日阅读数: 10
用户头像

happlyfox

关注

公众号 程序员工具集 2021.02.18 加入

博客 [www.zhouhuibo.club] 分享优秀的开源项目、学习资源和常用工具。谈论新闻热点、职场经验、学习感悟。共同进步!

评论

发布
暂无评论
golang设置时区的多种方式