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


Elixir DateTime.add用法及代码示例


Elixir语言中 DateTime.add 相关用法介绍如下。

用法:

add(datetime, amount_to_add, unit \\ :second, time_zone_database \\ Calendar.get_time_zone_database())
(从 1.8.0 开始)
@spec add(
  Calendar.datetime(),
  integer(),
  System.time_unit(),
  Calendar.time_zone_database()
) :: t()

将指定的时间量添加到 DateTime

接受来自 System.time_unit/0 的任何 unit 中的 amount_to_add。负值将及时向后移动。

考虑夏令时/夏令时等变化。这意味着添加时间会导致秋季"fall back"期间的墙壁时间为"go backwards"。在 "spring forward" 之前的日期时间中添加几秒钟可能会导致挂墙时间增加一个多小时。

小数秒精度以与 NaiveDateTime.add/2 类似的方式保持不变。

例子

iex> dt = DateTime.from_naive!(~N[2018-11-15 10:00:00], "Europe/Copenhagen", FakeTimeZoneDatabase)
iex> dt |> DateTime.add(3600, :second, FakeTimeZoneDatabase)
#DateTime<2018-11-15 11:00:00+01:00 CET Europe/Copenhagen>

iex> DateTime.add(~U[2018-11-15 10:00:00Z], 3600, :second)
~U[2018-11-15 11:00:00Z]

在 "spring forward" 之前添加 3 秒时,我们从 1:59:59 变为 3:00:02

iex> dt = DateTime.from_naive!(~N[2019-03-31 01:59:59.123], "Europe/Copenhagen", FakeTimeZoneDatabase)
iex> dt |> DateTime.add(3, :second, FakeTimeZoneDatabase)
#DateTime<2019-03-31 03:00:02.123+02:00 CEST Europe/Copenhagen>

相关用法


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