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

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

前提

1、docker 空鏡像(或類似環境)

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

問題

$ go run ./xxxpanic: time:missing Location in call to Time.In

原因

時間的位置資訊是從本地檔案系統中提取的,大多數系統都支援它,但還是取決於當前系統。具體的配置儲存路徑:

$ cd /usr/share/zoneinfo

進入該目錄就可以看到各時區的配置資訊

$ ls+VERSION    Australia   EET         Factory     Greenwich   Jamaica     Mexico      Poland      US          posixrulesAfrica      Brazil      EST         GB          HST         Japan       NZ          Portugal    UTC         zone.tabAmerica     CET         EST5EDT     GB-Eire     Hongkong    Kwajalein   NZ-CHAT     ROC         UniversalAntarctica  CST6CDT     Egypt       GMT         Iceland     Libya       Navajo      ROK         W-SUArctic      Canada      Eire        GMT+0       Indian      MET         PRC         Singapore   WETAsia        Chile       Etc         GMT-0       Iran        MST         PST8PDT     Turkey      ZuluAtlantic    Cuba        Europe      GMT0        Israel      MST7MDT     Pacific     UCT         iso3166.tab

但在空鏡像(或類似的情境)中就不存在這些時區設定檔,程式引用時就會出現這個報錯

(準確來說,出現這個問題是因為本地系統不存在 Asia/Chongqing 的時區設定檔)

解決

安裝

$ apk add --no-cache tzdata

安裝這個包後,會在 /usr/share/zoneinfo 目錄下產生各時區的配置資訊

注意,如果沒有 timezone 、locatime 的配置,需要手動處理一下

最後

你知道 tzdata 是什麼嗎?簡單來講,它是時區資料庫(作為檔案和模組)

這個軟體包的目的是將標準時區資料庫分布在 cabal 軟體包中,以便它可以在所有平台上統一用於 Haskell 程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.