当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir NaiveDateTime用法及代码示例


Elixir语言中 NaiveDateTime 相关用法介绍如下。

一个NaiveDateTime 结构(没有时区)和函数。

NaiveDateTime 结构包含字段年、月、日、小时、分钟、秒、微秒和日历。可以使用 new/2 new/8 函数或使用 ~N(参见 Kernel.sigil_N/2 )印记来构建新的原始日期时间:

iex> ~N[2000-01-01 23:00:07]
~N[2000-01-01 23:00:07]

可以直接访问结构中的日期和时间字段:

iex> naive = ~N[2000-01-01 23:00:07]
iex> naive.year
2000
iex> naive.second
7

我们称它们为"naive",因为这种日期时间表示没有时区。这意味着日期时间可能实际上并不存在于世界上的某些地区,即使它是有效的。

例如,当某个地区应用夏令时更改时,时钟通常向前或向后移动一小时。这意味着某些日期时间永远不会发生或可能多次发生。由于 NaiveDateTime 未针对时区进行验证,因此此类错误不会被注意到。

开发人员应避免直接创建NaiveDateTime 结构,而应依赖此模块提供的函数以及第三方日历库中的函数。

比较天真的日期时间

在 Elixir 中使用 ==/2 >/2 </2 和类似的比较是结构性的,并且基于 NaiveDateTime 结构字段。要正确比较原始日期时间,请使用 compare/2 函数。

使用时代

add/3 diff/3 函数可用于计算日期时间或检索瞬间之间的秒数。例如,如果有兴趣计算距 Unix 纪元 (1970-01-01 00:00:00) 的秒数:

iex> NaiveDateTime.diff(~N[2010-04-17 14:00:00], ~N[1970-01-01 00:00:00])
1271512800

iex> NaiveDateTime.add(~N[1970-01-01 00:00:00], 1_271_512_800)
~N[2010-04-17 14:00:00]

这些函数经过优化以处理常见的纪元,例如上面的 Unix 纪元或公历纪元 (0000-01-01 00:00:00)。

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 NaiveDateTime。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。