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
函数可用于计算日期时间或检索瞬间之间的秒数。例如,如果有兴趣计算距 Unix 纪元 (1970-01-01 00:00:00) 的秒数:diff/3
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 NaiveDateTime.utc_now用法及代码示例
- Elixir NaiveDateTime.from_gregorian_seconds用法及代码示例
- Elixir NaiveDateTime.truncate用法及代码示例
- Elixir NaiveDateTime.from_erl!用法及代码示例
- Elixir NaiveDateTime.from_iso8601用法及代码示例
- Elixir NaiveDateTime.from_erl用法及代码示例
- Elixir NaiveDateTime.convert!用法及代码示例
- Elixir NaiveDateTime.new!用法及代码示例
- Elixir NaiveDateTime.to_erl用法及代码示例
- Elixir NaiveDateTime.diff用法及代码示例
- Elixir NaiveDateTime.to_iso8601用法及代码示例
- Elixir NaiveDateTime.local_now用法及代码示例
- Elixir NaiveDateTime.compare用法及代码示例
- Elixir NaiveDateTime.to_string用法及代码示例
- Elixir NaiveDateTime.new用法及代码示例
- Elixir NaiveDateTime.convert用法及代码示例
- Elixir NaiveDateTime.to_time用法及代码示例
- Elixir NaiveDateTime.from_iso8601!用法及代码示例
- Elixir NaiveDateTime.to_date用法及代码示例
- Elixir NaiveDateTime.to_gregorian_seconds用法及代码示例
- Elixir NaiveDateTime.add用法及代码示例
- Elixir Node.ping用法及代码示例
- Elixir Node.start用法及代码示例
- Elixir StringIO.flush用法及代码示例
- Elixir Calendar.ISO.date_to_string用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 NaiveDateTime。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。