首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用配置文件来使用tzdata?

如何使用配置文件来使用tzdata?
EN

Stack Overflow用户
提问于 2022-08-31 02:45:40
回答 2查看 71关注 0票数 0

我正在跟踪https://elixirschool.com/en/lessons/basics/date_time#working-with-timezones-4,我希望使用tzdata来跟随本教程。

我在~/learning_elixir,我有一个simple.exs文件和一个config/config.exs文件,其中我有

代码语言:javascript
复制
import Config

config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase

当我使用iex并尝试遵循本教程时

代码语言:javascript
复制
paris_datetime = DateTime.from_naive!(~N[2019-01-01 12:00:00], "Europe/Paris")
#DateTime<2019-01-01 12:00:00+01:00 CET Europe/Paris>
{:ok, ny_datetime} = DateTime.shift_zone(paris_datetime, "America/New_York")
{:ok, #DateTime<2019-01-01 06:00:00-05:00 EST America/New_York>}
ny_datetime
#DateTime<2019-01-01 06:00:00-05:00 EST America/New_York>

它不起作用,我得到了这个错误

代码语言:javascript
复制
** (ArgumentError) cannot convert ~N[2019-01-01 12:00:00] to datetime, reason: :utc_only_time_zone_database
    (elixir 1.13.4) lib/calendar/datetime.ex:624: DateTime.from_naive!/3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-31 03:23:08

如本教程所述,

正如我们在上一节中所指出的那样,

默认情况下没有任何时区数据。为了解决这个问题,我们需要安装和设置tzdata包。安装之后,您应该全局配置Elixir以使用Tzdata作为时区数据库。

你安装tzdata了吗?如果你没有mix项目,只玩控制台上的东西,你是怎么做到的呢?为什么您会期望config/3在没有mix项目的情况下能够神奇地工作呢?

也就是说,要使它从没有iex项目的mix会话中工作,就应该安装tzdata并显式地设置应用程序环境。

代码语言:javascript
复制
Mix.install([:tzdata])
Application.put_env(:elixir, :time_zone_database, Tzdata.TimeZoneDatabase)

paris_datetime = DateTime.from_naive!(~N[2019-01-01 12:00:00], "Europe/Paris")
#DateTime<2019-01-01 12:00:00+01:00 CET Europe/Paris>
票数 2
EN

Stack Overflow用户

发布于 2022-08-31 03:50:34

您需要使用iex -S mix启动iex。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73550378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档