gpt4 book ai didi

datetime - Elixir 中以小时为单位的 2 个 DateTime 之间的差异

转载 作者:行者123 更新时间:2023-12-04 13:30:47 25 4
gpt4 key购买 nike

我的目标是找到现在和某些提供的 date_time 之间的小时数差异。我正在尝试这样做:

pry(1)> dt1
#DateTime<2017-10-24 05:12:46.000000Z>

pry(2)> Ecto.DateTime.to_erl(dt1)
** (FunctionClauseError) no function clause matching in Ecto.DateTime.to_erl/1

The following arguments were given to Ecto.DateTime.to_erl/1:

# 1
#DateTime<2017-10-24 05:12:46.000000Z>

Attempted function clauses (showing 1 out of 1):

def to_erl(%Ecto.DateTime{year: year, month: month, day: day, hour: hour, min: min, sec: sec})

(ecto) lib/ecto/date_time.ex:608: Ecto.DateTime.to_erl/1
# ............

如何解决? 或者有没有更好的方法来实现我的目标?

备注 我不使用 timex 也不会使用它,也不会使用任何第三方库。只有 Elixir/Erlang/Phoenix 内置的。

最佳答案

您可以使用 DateTime.diff/3 :

iex> dt1 = %DateTime{year: 2000, month: 2, day: 29, zone_abbr: "AMT",
...> hour: 23, minute: 0, second: 7, microsecond: {0, 0},
...> utc_offset: -14400, std_offset: 0, time_zone: "America/Manaus"}
iex> dt2 = %DateTime{year: 2000, month: 2, day: 29, zone_abbr: "CET",
...> hour: 23, minute: 0, second: 7, microsecond: {0, 0},
...> utc_offset: 3600, std_offset: 0, time_zone: "Europe/Warsaw"}
iex> DateTime.diff(dt1, dt2)
18000
iex> DateTime.diff(dt2, dt1)
-18000

DateTime.diff/3返回秒数,您必须像这样计算结果中的小时数:
result_in_hours = result_in_seconds/(60*60)

关于datetime - Elixir 中以小时为单位的 2 个 DateTime 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46902739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com