【问题标题】:Elixir/Phoenix timestamps localElixir/Phoenix 本地时间戳
【发布时间】:2016-10-22 16:11:21
【问题描述】:

我有几个架构 (Ecto.Schema) 并将 timestamps 用于插入的_at、更新的_at 字段。但它默认为 Ecto.DateTime 并在 UTC 中节省时间。是否可以使用当地时间而不是 UTC?我已经检查了Ecto.Schema,但似乎找不到将其默认为当地时间而不是 UTC 的方法。示例:

schema "orders" do

field :number_of_customers, :integer
field :completed, :boolean, default: false

timestamps
end

谢谢!

【问题讨论】:

  • 我认为将它们保持在不同的时区不是一个好主意,因此可能无法更改它,但我不确定。
  • 嘿@JustMichael,我需要它用于本地机器,所以当我插入数据库时​​,它会根据我的时间插入,而不是UTC。
  • 我明白了。我想你可以创建一个不同的日期时间列并自己更新它,或者使用数据库触发器来更新这些时间戳,每次更新或类似的东西,但必须有更好的方法,但我不知道它是什么。
  • 谢谢@JustMichael,我会试试你的建议。但是,是的,没有办法使用本地时间,或者至少指定时区,这有点奇怪,所以 UTC 将是 +/- 特定的 GMT。

标签: phoenix-framework elixir


【解决方案1】:

根据the docs,您几乎可以使用timestamps 做任何您想做的事情。

使用选项,您可以指定:type,或者您甚至可以注册自定义函数,该函数将被调用以生成使用:autogenerate 的函数。

不过,我会将时间戳保留为 UTC,因为这是一种标准方式。奇怪的是它对你不起作用。调用Ecto.DateTime.utc 应该只从操作系统获取正确的时区信息并以UTC 显示正确的时间。如果不是这种情况,可能是您的操作系统时区不正确?

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    相关资源
    最近更新 更多