datetime - 在 Elixir 中,如何判断给定的 NaiveDateTime (加上像 "US/Mountain"这样的时区)是否是过去的时间?

标签 datetime timezone elixir

假设我有 NaiveDateTime 类型的 ndt 和一个类似 "US/Mountain" 的字符串 tz。如何确定 tz 中的 ndt 是否是过去时间?

最佳答案

Elixir 默认情况下不包含时区数据库,但如果您添加时区数据库,它确实支持时区。在撰写本文时,最简单的方法是使用 Tzdata ,但请检查 DateTime docs了解最新建议。

  1. {:tzdata, "~> 1.1"} 添加到 mix.exs
  2. config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase 添加到 config/config.exs
  3. 使用DateTime.from_naive!/3转换为时区感知的DateTime
  4. 使用DateTime.compare/2将日期与现在进行比较。
~N[2000-01-01 10:10:10]
|> DateTime.from_naive!("US/Mountain")
|> DateTime.compare(DateTime.utc_now())
|> Kernel.==(:lt)

输出:

true

配置示例:

# config/config.exs
import Config
config :elixir, :time_zone_database, Tzdata.TimeZoneDatabase

关于datetime - 在 Elixir 中,如何判断给定的 NaiveDateTime (加上像 "US/Mountain"这样的时区)是否是过去的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65890851/

相关文章:

java - GregorianCalendar 构造函数是否检查无效输入?

python - 如何在 Django 中自定义数据库连接设置的时区?

elixir - Elixir Supervisor/Process 中的 "id"和 "name"是否相同?

elixir - 具有 key 导出功能的 AES 解密

c# - 防止反序列化 DateTime 值时进行时区转换

elixir - 如何在 Phoenix Framework 中创建全局 View ?

MySQL 查询中的 PHP 日期变量

javascript - 从网络服务解析日期

java - 如何更改 Java 中 Date 对象的时区偏移量?

python - 为什么 Pytz 对纽约和底特律有不同的时区列表?