Elixir UTC 和 DateTime 结构的时区比较

l28*_*288 1 erlang comparison timezone datetime elixir

我正在尝试比较两个日期时间以查看它们是否重叠。然而,一个是 DateTime 结构,另一个是 ~U[] 时间 - 这就是它们从数据库中出来的方式。我不知道如何做到这一点 - 如果我可以在 UTC 中比较它们并保持时区意识,那就太好了。

我有的两次是: start_datetime_1 = ~U[2022-03-31 11:15:00.000000Z]

starttime_2 = #DateTime<2022-03-31 11:15:00.000000+01:00 BST Europe/London>

我想做类似的事情: DateTime.compare(start_datetime_1, start_datetime_2 == :gt || :eq)

任何帮助,将不胜感激!

Ale*_*kin 6

~U[2022-03-31 11:15:00.000000Z]是相同的DateTime,但是在UTC. 印记~U[]只是语法糖。

DateTime.compare/2您可以与开箱即用进行比较。它理解时区。

DateTime.compare(start_datetime_1, start_datetime_2) in [:gt, :eq]
Run Code Online (Sandbox Code Playgroud)