如何推断Elixir或Erlang中的当前时区?

如何推断Elixir或Erlang中的当前时区?,erlang,elixir,Erlang,Elixir,在Elixir或Erlang中是否有打印当前时区名称的方法?我知道我可以通过调用Erlang日历模块获得Elixir中的本地时间 :calendar.local_time 通过使用日历包,我可以在Elixir中获得UTC的当前时间: Calendar.DateTime.now_utc() 但是,这两个包都没有为我提供返回当前时区名称的方法。我想在UTC中存储日期,但在本地时区中显示。在我居住的地方,当前时区称为“MST7MDT”(DST无效时称为“MST”),但我不想将这些字符串硬编码到我的

在Elixir或Erlang中是否有打印当前时区名称的方法?我知道我可以通过调用Erlang日历模块获得Elixir中的本地时间

:calendar.local_time
通过使用日历包,我可以在Elixir中获得UTC的当前时间:

Calendar.DateTime.now_utc()
但是,这两个包都没有为我提供返回当前时区名称的方法。我想在UTC中存储日期,但在本地时区中显示。在我居住的地方,当前时区称为“MST7MDT”(DST无效时称为“MST”),但我不想将这些字符串硬编码到我的程序中


有没有办法让Elixir告诉我,我的当前时区是“MST7MDT”,这样我就可以使用Calendar.DateTime函数来正确格式化我的日期时间?

我认为实际上没有官方的方法来获取erlang中作为字符串的本地时区信息,但您可以尝试使用library,我认为最好的方法是在向最终用户显示日期时使用

但是,如果您确实需要获取系统的当前时区,并且它是一个类似Unix的系统,您可以随时执行以下操作:

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

这不是最优雅的解决方案,但很有效。似乎没有任何与
java.util.TimeZone.getDefault()等效的东西可用。

谢谢!我可以使这两种方法都适用于我的系统。