在线文档教程

Calendar.ISO

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