gpt4 book ai didi

time - 在 Elixir 中使用日期时间

转载 作者:行者123 更新时间:2023-12-05 02:19:55 28 4
gpt4 key购买 nike

我需要找出 Ecto 从数据库中检索到的时间与当前时间(UTC 时间)之间的分钟差。据我所知,如果不使用 Timex 等第三方库,在 Elixir 上进行计时操作并非易事。但是,我想避免使用第三方依赖项。那么我怎样才能找到时差呢?我知道我可以通过 DateTime.utc_now() 获取当前时间,但下一步是如何从数据库中减去日期时间,它在 Ecto.DateTime 中格式,从它?

最佳答案

我相信 Ecto 很快就会有计划暂时使用原生的 Elixir 日期时间格式,我知道你的痛苦。

一种解决方案是将 ecto 日期时间转换为 erlang 日期时间格式:

{{YYYY, MM, DD}, {HH, MM, SS}}

然后使用 erlang 日历库进行比较。例如,假设我们有一个 Post 模型,我们想知道它更新了多久:

Repo.Post.get!(%Post{}, 1).created_at
|> Ecto.DateTime.to_erl
|> :calendar.time_difference(:calendar.universal_time)

那么假设这篇文章是大约 1 个月前创建的 (2016-10-25T10:24:23)。

通过上述函数运行它会返回:

{30, {17, 30, 53}}

表示 30 天 17 小时 30 分 53 秒前。

您可以轻松地从那里解构元组并仅获取您需要的组件(在您的情况下为分钟)。

例如

{_, {_h, minutes, _s}} = time_diff

关于time - 在 Elixir 中使用日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796988/

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