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)
计算从给定的一周中的一天year
,month
和day
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
计算星期从给定的year
,month
和day
。
它是从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
。