簡體   English   中英

如何推斷Elixir或Erlang的當前時區?

[英]How do I infer the current timezone in Elixir or Erlang?

Elixir或Erlang有沒有辦法打印出當前時區的名稱? 我知道我可以通過調用Erlang Calendar模塊獲取Elixir的當地時間。

:calendar.local_time

我可以使用日歷包獲取Elixir中UTC的當前時間:

Calendar.DateTime.now_utc()

但是,這些軟件包都沒有為我提供一個返回當前時區名稱的方法。 我想以UTC格式存儲我的日期,但是在當地時區顯示它們。 我居住的地方,當前時區被稱為“MST7MDT”(當DST沒有生效時為“MST”),但我不想將這些字符串硬編碼到我的程序中。

有沒有辦法讓Elixir告訴我,我當前的時區是“MST7MDT”,那么我可以使用Calendar.DateTime函數正確格式化我的DateTimes?

我認為最好的方法是在向最終用戶顯示日期時使用:calendar.universal_time_to_local_time

但是如果你真的需要獲得系統的當前時區,並且它是一個類Unix系統,你總是可以這樣做:

def get_timezone() do
  {zone, result} = System.cmd("date", ["+%Z"])
  if result == 0, do: String.trim(zone)
end

不是最優雅的解決方案,但有效。 似乎沒有任何與java.util.TimeZone.getDefault()相當的東西。

我認為實際上沒有正式的方法如何在erlang中將本地時區信息作為字符串獲取,但您可以嘗試使用qdate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM