Elixir语言中 DateTime.new!
相关用法介绍如下。
用法:
new!(date, time, time_zone \\ "Etc/UTC", time_zone_database \\ Calendar.get_time_zone_database())
(从 1.11.0 开始)
@spec new!(Date.t(), Time.t(), Calendar.time_zone(), Calendar.time_zone_database()) ::
t()
从日期和时间结构构建日期时间,引发错误。
它期望时区将
放入。如果未通过时区,它将默认为 DateTime
"Etc/UTC"
,始终成功。否则,将根据作为 time_zone_database
给出的时区数据库检查 DateTime。请参阅模块文档中的“时区数据库”部分。
例子
iex> DateTime.new!(~D[2016-05-24], ~T[13:26:08.003], "Etc/UTC")
~U[2016-05-24 13:26:08.003Z]
当日期时间不明确时 - 例如在从夏季时间更改为冬季时间期间 - 将引发错误。
iex> DateTime.new!(~D[2018-10-28], ~T[02:30:00], "Europe/Copenhagen", FakeTimeZoneDatabase)
** (ArgumentError) cannot build datetime with ~D[2018-10-28] and ~T[02:30:00] because such instant is ambiguous in time zone Europe/Copenhagen as there is an overlap between #DateTime<2018-10-28 02:30:00+02:00 CEST Europe/Copenhagen> and #DateTime<2018-10-28 02:30:00+01:00 CET Europe/Copenhagen>
当挂钟时间有间隙时——例如在春天时钟向前转动时——就会出现错误。
iex> DateTime.new!(~D[2019-03-31], ~T[02:30:00], "Europe/Copenhagen", FakeTimeZoneDatabase)
** (ArgumentError) cannot build datetime with ~D[2019-03-31] and ~T[02:30:00] because such instant does not exist in time zone Europe/Copenhagen as there is a gap between #DateTime<2019-03-31 01:59:59.999999+01:00 CET Europe/Copenhagen> and #DateTime<2019-03-31 03:00:00+02:00 CEST Europe/Copenhagen>
大多数时候,在某个时区的某个日期和时间,只有一个有效的日期时间。
iex> datetime = DateTime.new!(~D[2018-07-28], ~T[12:30:00], "Europe/Copenhagen", FakeTimeZoneDatabase)
iex> datetime
#DateTime<2018-07-28 12:30:00+02:00 CEST Europe/Copenhagen>
相关用法
- Elixir DateTime.new用法及代码示例
- Elixir DateTime.now用法及代码示例
- Elixir DateTime.now!用法及代码示例
- Elixir DateTime.to_unix用法及代码示例
- Elixir DateTime.from_naive用法及代码示例
- Elixir DateTime.from_unix用法及代码示例
- Elixir DateTime.from_unix!用法及代码示例
- Elixir DateTime.convert用法及代码示例
- Elixir DateTime.utc_now用法及代码示例
- Elixir DateTime.add用法及代码示例
- Elixir DateTime.truncate用法及代码示例
- Elixir DateTime.diff用法及代码示例
- Elixir DateTime.to_date用法及代码示例
- Elixir DateTime.to_gregorian_seconds用法及代码示例
- Elixir DateTime.convert!用法及代码示例
- Elixir DateTime.from_naive!用法及代码示例
- Elixir DateTime.from_gregorian_seconds用法及代码示例
- Elixir DateTime.to_naive用法及代码示例
- Elixir DateTime.shift_zone!用法及代码示例
- Elixir DateTime.from_iso8601用法及代码示例
- Elixir DateTime.compare用法及代码示例
- Elixir DateTime.to_string用法及代码示例
- Elixir DateTime.to_iso8601用法及代码示例
- Elixir DateTime.shift_zone用法及代码示例
- Elixir DateTime.to_time用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 DateTime.new!(date, time, time_zone \\ "Etc/UTC", time_zone_database \\ Calendar.get_time_zone_database())。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。