You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过配置文件使用tzdata?Elixir时区配置报错求助

解决Elixir时区配置不生效导致的:utc_only_time_zone_database错误

错误原因:直接启动iex时,系统不会自动加载项目config/config.exs中的配置,因此Elixir仍使用默认的UTCOnlyTimeZoneDatabase,该数据库仅支持UTC时区,无法处理Europe/Paris这类非UTC时区转换。

解决方案步骤:

  1. 确认安装tzdata依赖
    检查项目根目录下的mix.exs文件,确保已添加tzdata依赖:

    defp deps do
      [
        {:tzdata, "~> 1.1"}
      ]
    end
    

    若未添加,执行以下命令安装依赖:

    mix deps.get
    
  2. 加载配置启动iex
    在~/learning_elixir目录下,使用以下命令启动iex,确保mix加载项目配置:

    iex -S mix
    
  3. 验证配置与执行代码
    启动iex后,先确认时区数据库配置已生效:

    Application.get_env(:elixir, :time_zone_database)
    # 预期返回:Tzdata.TimeZoneDatabase
    

    之后执行教程中的代码即可正常运行:

    paris_datetime = DateTime.from_naive!(~N[2019-01-01 12:00:00], "Europe/Paris")
    {:ok, ny_datetime} = DateTime.shift_zone(paris_datetime, "America/New_York")
    ny_datetime
    

内容的提问来源于stack exchange,提问作者user1354934

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:57:18