加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

panic: time: missing Location in call to Time.In

发布时间:2020-12-16 19:16:26 所属栏目:大数据 来源:网络整理
导读:前提 1、docker 空镜像(或类似环境) 2、Go 应用中 使用了 loc,_ := time.LoadLocation("Asia/Chongqing") 问题 $ go run ./xxxpanic: time:missing Location in call to Time.In 原因 时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是

前提

1、docker 空镜像(或类似环境)

2、Go 应用中 使用了 loc,_ := time.LoadLocation("Asia/Chongqing")

问题

$ go run ./xxx

panic: time:missing Location in call to Time.In

原因

时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是取决于当前系统。具体的配置存储路径:

$ cd /usr/share/zoneinfo

进入该目录就可以看到各时区的配置信息

$ ls
+VERSION    Australia   EET         Factory     Greenwich   Jamaica     Mexico      Poland      US          posixrules
Africa      Brazil      EST         GB          HST         Japan       NZ          Portugal    UTC         zone.tab
America     CET         EST5EDT     GB-Eire     Hongkong    Kwajalein   NZ-CHAT     ROC         Universal
Antarctica  CST6CDT     Egypt       GMT         Iceland     Libya       Navajo      ROK         W-SU
Arctic      Canada      Eire        GMT+0       Indian      MET         PRC         Singapore   WET
Asia        Chile       Etc         GMT-0       Iran        MST         PST8PDT     Turkey      Zulu
Atlantic    Cuba        Europe      GMT0        Israel      MST7MDT     Pacific     UCT         iso3166.tab

但在空镜像(或类似的场景)中就不存在这些时区配置文件,程序引用时就会出现这个报错

(准确来说,出现这个问题是因为本地系统不存在 Asia/Chongqing 的时区配置文件)

解决

安装

$ apk add --no-cache tzdata

安装这个包后,会在 /usr/share/zoneinfo 目录下生成各时区的配置信息

注意,如果没有 timezone 、locatime 的配置,需要手动处理一下

最后

你知道 tzdata 是什么吗?简单来讲,它是时区数据库(作为文件和模块)

这个软件包的目的是将标准时区数据库分布在 cabal 软件包中,以便它可以在所有平台上统一用于 Haskell 程序

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读