非常教程

Elixir 1.5参考手册

日历 | Calendar

Calendar.ISO

遵循ISO8601的日历实施。

这个日历实现了格雷戈里日历,因此与当今大多数国家使用的日历兼容。预测意味着公历年的公历规则始终适用,因此日期在公历1583年之前从公历通过之日起给出不同的结果。

请注意,虽然ISO8601允许时间和日期时间指定24:00:00作为第二天的零小时,但Elixir不支持此标记。

类型

day()month()year()

函数

date_to_string(year, month, day)

将给定日期转换为字符串。

datetime_to_string(year, month, day, hour, minute, second, microsecond, time_zone, zone_abbr, utc_offset, std_offset)

将日期时间(带时区)转换为字符串

day_of_week(year, month, day)

计算从给定的一周中的一天yearmonthday

day_rollover_relative_to_midnight_utc()

定义给定日历的滚转时刻

days_in_month(year, month)

返回给定的一年月中有多少天。

leap_year?(year)

如果给定年份是闰年,则返回

naive_datetime_from_iso_days(arg)

转换t:Calendar.iso_days将格式设置为此日历指定的日期时间格式。

naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)

返回t:Calendar.iso_days指定日期的格式

naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)

Converts the datetime (without time zone) into a string

time_from_day_fraction(arg)

将日分数转换为此日历的时间表示形式

time_to_day_fraction(hour, minute, second, arg)

返回指定时间的规范化日分数。

time_to_string(hour, minute, second, microsecond, format \ :extended)

将给定的时间转换为字符串。

valid_date?(year, month, day)

如果给定的日期在日历中描述了适当的日期,应该返回true

valid_time?(hour, minute, second, arg)

如果给定的时间在日历中描述了适当的时间,应该返回true

day()

day() :: 1..31

month()

month() :: 1..12

year()

year() :: 0..9999

date_to_string(year, month, day)

将给定日期转换为字符串。

datetime_to_string(year, month, day, hour, minute, second, microsecond, time_zone, zone_abbr, utc_offset, std_offset)

将日期时间(带时区)转换为字符串。

day_of_week(year, month, day)

day_of_week(year, month, day) :: 1..7

计算星期从给定的yearmonthday

它是从1到7的整数,其中1是星期一,7是星期日。

实例

iex> Calendar.ISO.day_of_week(2016, 10, 31)
1
iex> Calendar.ISO.day_of_week(2016, 11, 01)
2
iex> Calendar.ISO.day_of_week(2016, 11, 02)
3
iex> Calendar.ISO.day_of_week(2016, 11, 03)
4
iex> Calendar.ISO.day_of_week(2016, 11, 04)
5
iex> Calendar.ISO.day_of_week(2016, 11, 05)
6
iex> Calendar.ISO.day_of_week(2016, 11, 06)
7

day_rollover_relative_to_midnight_utc()

定义给定日历的滚转时刻。

在你的日历上,这是当日结束,第二天开始的时刻。

此函数的结果用于检查两个日历是否在同一时间滚动。如果没有,我们只能在它们之间转换日期时间和时间。如果他们这样做了,这意味着我们也可以转换日期以及天真的日期时间在他们之间。

这一天的分数应该以其最简化的形式可能,以使比较迅速。

实例

  • 如果在日历中,新的一天从午夜开始,则返回{0,1}。
  • 如果在日历中,从日出开始新的一天,返回{1,4}。
  • 如果在日历中,新的一天从中午开始,返回{1,2}。
  • 如果在日历中,新的一天从日落开始,返回{3,4}。

回调实现Calendar.day_rollover_relative_to_midnight_utc/0...

days_in_month(year, month)

days_in_month(year, month) :: 28..31

返回给定的一年月中有多少天。

实例

iex> Calendar.ISO.days_in_month(1900, 1)
31
iex> Calendar.ISO.days_in_month(1900, 2)
28
iex> Calendar.ISO.days_in_month(2000, 2)
29
iex> Calendar.ISO.days_in_month(2001, 2)
28
iex> Calendar.ISO.days_in_month(2004, 2)
29
iex> Calendar.ISO.days_in_month(2004, 4)
30

leap_year?(year)

leap_year?(year) :: boolean

如果给定年份是闰年,则返回。

实例

iex> Calendar.ISO.leap_year?(2000)
true
iex> Calendar.ISO.leap_year?(2001)
false
iex> Calendar.ISO.leap_year?(2004)
true
iex> Calendar.ISO.leap_year?(1900)
false

naive_datetime_from_iso_days(arg)

naive_datetime_from_iso_days(Calendar.iso_days) :: {Calendar.year, Calendar.month, Calendar.day, Calendar.hour, Calendar.minute, Calendar.second, Calendar.microsecond}

转换t:Calendar.iso_days将格式设置为此日历指定的日期时间格式。

实例

iex> Calendar.ISO.naive_datetime_from_iso_days({0, {0, 86400}})
{0, 1, 1, 0, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({730485, {0, 86400}})
{2000, 1, 1, 0, 0, 0, {0, 6}}
iex> Calendar.ISO.naive_datetime_from_iso_days({730485, {43200, 86400}})
{2000, 1, 1, 12, 0, 0, {0, 6}}

naive_datetime_to_iso_days(year, month, day, hour, minute, second, microsecond)

naive_datetime_to_iso_days(Calendar.year, Calendar.month, Calendar.day, Calendar.hour, Calendar.minute, Calendar.second, Calendar.microsecond) :: Calendar.iso_days

返回t:Calendar.iso_days指定日期的格式。

实例

iex> Calendar.ISO.naive_datetime_to_iso_days(0, 1, 1, 0, 0, 0, {0, 6})
{0, {0, 86400000000}}
iex> Calendar.ISO.naive_datetime_to_iso_days(2000, 1, 1, 12, 0, 0, {0, 6})
{730485, {43200000000, 86400000000}}
iex> Calendar.ISO.naive_datetime_to_iso_days(2000, 1, 1, 13, 0, 0, {0, 6})
{730485, {46800000000, 86400000000}}

naive_datetime_to_string(year, month, day, hour, minute, second, microsecond)

将日期时间(不带时区)转换为字符串。

time_from_day_fraction(arg)

time_from_day_fraction(Calendar.day_fraction) :: {Calendar.hour, Calendar.minute, Calendar.second, Calendar.microsecond}

将日分数转换为此日历的时间表示形式。

实例

iex> Calendar.ISO.time_from_day_fraction({1,2})
{12, 0, 0, {0, 6}}
iex> Calendar.ISO.time_from_day_fraction({13,24})
{13, 0, 0, {0, 6}}

time_to_day_fraction(hour, minute, second, arg)

time_to_day_fraction(Calendar.hour, Calendar.minute, Calendar.second, Calendar.microsecond) :: Calendar.day_fraction

返回指定时间的规范化日分数。

实例

iex> Calendar.ISO.time_to_day_fraction(0, 0, 0, {0, 6})
{0, 86400000000}
iex> Calendar.ISO.time_to_day_fraction(12, 34, 56, {123, 6})
{45296000123, 86400000000}

time_to_string(hour, minute, second, microsecond, format \ :extended)

将给定时间转换为字符串。

valid_date?(year, month, day)

如果给定的日期在日历中描述了适当的日期,应该返回true

回调实现Calendar.valid_date?/3

valid_time?(hour, minute, second, arg)

如果给定的时间在日历中描述了适当的时间,应该返回true

回调实现Calendar.valid_time?/4

日历 | Calendar相关

Elixir 1.5

Elixir 基于 Erlang 虚拟机的函数式、面向并行,是一种较好的编程语言。它以 Erlang 为基础,支持分布式、高容错、实时应用程序的开发。

主页 https://elixir-lang.org/
源码 https://github.com/elixir-lang/elixir
版本 1.5
发布版本 1.5.2