惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
博客园 - 司徒正美
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
A
About on SuperTechFans
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
B
Blog RSS Feed
G
Google Developers Blog
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)

博客园 - 立志做一个好的程序员

详解 Go 中的 rune 类型 【转】扫盲:Windows桌面应用开发框架:原生、跨平台、云桌面 Go-Zero自定义goctl实战:定制化模板,加速你的微服务开发效率 Go单体服务开发最佳实践 【转】Androidstudio报错Algorithm HmacPBESHA256 not available 借助ai来分析代码,理解代码 【转】linux设置密钥登录(只允许密钥登录) 【转】QPS和并发数的关系 【转】Command Pattern in Go (Golang) [转]Golang Functional Options Pattern 【转】Raft 理论基础 【转】spin lock 和mutex [转]Go sync.Once:简约而不简单的并发利器 [转]Golang atomic.CompareAndSwapInt64()实例讲解 [转]手把手教你如何用golang实现一个timewheel时间轮 [转]Golang线程池实现百万级高并发 [转]Go网络编程 · 一条TCP连接讲透九大知识点 【转】,接上面3篇.Implement Sql Database Driver in 100 Lines of Go 【转】dive into golang database/sql(3)
【转】Golang使用时区时候报错
立志做一个好的程序员 · 2026-02-04 · via 博客园 - 立志做一个好的程序员

Golang使用时区时候报错

错误1:

panic: The system cannot find the path specified.

错误2:

panic: unknown time zone Asia/Shanghai

原因

  1. 使用docker镜像缺少相关时区文件
  2. 使用-trimpath参数后报错
  3. 缺少zoneinfo.zip文件

解决方案

方案一

在入口添加导入语句

优点:基本能解决以上所有的问题,一劳永逸
缺点:打包会引入超1.3MB的文件

import _ "time/tzdata"

方案二

针对docker镜像,加入以下命令:

本文并未尝试, 资料来源与网络, 详见: https://stackoverflow.com/questions/59044243/timezones-failing-to-load-in-go-1-13
该方案使用的镜像是alpine

1. 命令一

注意最新的alpine镜像已不支持tzdata, 参考 https://github.com/dotnet/dotnet-docker/issues/1366

RUN apk add --no-cache tzdata

2. 命令二

COPY ./zoneinfo.zip /usr/local/go/lib/time/zoneinfo.zip

以上命令二选其一即可 命令二需要提供zoneinfo.zip文件,zoneinfo.zip获取见附录

方案三

1. 入口直接加载zoneinfo.zip文件

在入口直接载入zoneinfo.zip文件;示例如下

func main() {
    loadZoneinfo()
    

ZONEINFO 为环境变量名,不能更改

2. 将zoneinfo.zip文件复制到对应目录

类似方案二中的命令二方式

cp ./zoneinfo.zip /usr/local/go/lib/time/zoneinfo.zip

附录

zoneinfo.zip默认是在$GOROOT/lib/time/zoneinfo.zip

  • windows默认在C:\Program Files\Go\lib\time\zoneinfo.zip
  • Linux默认在/usr/local/go/lib/time/zoneinfo.zip