在线文档教程

日历 | Calendar

日历行为

该模块定义了在Elixir中处理日历,日期,时间和日期时间的职责。

目前它定义了Elixir中日历行为的类型和最小实现。Elixir中Calendar功能的目标是为互操作性提供基础,而不是提供全功能的日期时间API。

对于实际的日期,时间和日期时间结构看DateTimeNaiveDateTimeDateTime

请注意,年份,月份,日期等指定是过分指定的(即整数而不是1..12几个月),因为不同的日历每月可能有不同的天数,每年的月数等等。

摘要

类型

calendar()

日历实施

date()

任何包含日期字段的地图/结构体

datetime()

任何包含日期时间字段的地图/结构体

day()day_fraction()

在日历之间转换时使用内部时间格式

hour()iso_days()

在日历之间进行转换时使用的内部日期格式。

microsecond()

微秒存储精度

minute()month()naive_datetime()

任何包含naive_datetime字段的地图/结构体

second()std_offset()

以秒为单位的时区标准偏移量(夏季时间不为零)

time()

任何包含时间字段的地图/结构体

time_zone()

根据IANA tz数据库(例如欧洲/苏黎世)的时区ID

utc_offset()

UTC时区的偏移量(以秒为单位)。

year()zone_abbr()

时区缩写(例如CET或CEST或BST等)

函数

compatible_calendars?(calendar, calendar)

如果两个日历具有相同的开始新的一天的时间,则返回true,否则返回false

回调

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)

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

naive_datetime_from_iso_days(iso_days)

转换t:iso_days为日历的日期时间格式

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

将给定的日期时间(带时区)转换为t:iso_days格式

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

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

time_from_day_fraction(day_fraction)

皈依t:day_fraction到日历的时间格式

time_to_day_fraction(hour, minute, second, microsecond)

将给定时间转换为t:day_fraction格式

time_to_string(hour, minute, second, microsecond)

根据日历将时间转换为字符串。

valid_date?(year, month, day)

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

valid_time?(hour, minute, second, microsecond)

应该回来true如果给定的时间描述日历中的适当时间

类型

calendar()

calendar() :: module

日历实现

date()

date() :: %{optional(any) => any, :calendar => calendar, :year => year, :month => month, :day => day}

包含日期字段的任何映射/结构

datetime()

datetime() :: %{optional(any) => any, :calendar => calendar, :year => year, :month => month, :day => day, :hour => hour, :minute => minute, :second => second, :microsecond => microsecond, :time_zone => time_zone, :zone_abbr => zone_abbr, :utc_offset => utc_offset, :std_offset => std_offset}

包含日期时间字段的任何映射/结构

day()

day() :: integer

day_fraction()

day_fraction() :: {parts_in_day :: non_neg_integer, parts_per_day :: pos_integer}

在日历之间进行转换时使用内部时间格式。

它将时间表示为一天中的一小部分(从午夜开始)。parts_in_day指定一天中有多少时间已经过去,同时parts_per_day表示一天中有多少部分适合。

hour()

hour() :: integer

iso_days()

iso_days() :: {days :: integer, day_fraction}

在日历之间进行转换时使用的内部日期格式。

这是包含自0000-01-01 + 00:00T00:00.00000以ISO 8601表示法(也称为Proleptic Gregorian Calendar 1月1日午夜1时的午夜)以来经过的最后一天的小数部分的天数。

parts_per_day代表当前天数是多少子部分细分(适用于不同的日历,选择一个不同的parts_per_day可能是有意义的)。这parts_in_day代表parts_per_day了最后一天中有多少人已经过去了。

microsecond()

microsecond() :: {0..999999, 0..6}

微秒和存储精度。

精度表示在将微秒表示为外部格式时必须使用的位数。如果精度为0,则意味着必须跳过微秒。

minute()

minute() :: integer

month()

month() :: integer

naive_datetime()

naive_datetime() :: %{optional(any) => any, :calendar => calendar, :year => year, :month => month, :day => day, :hour => hour, :minute => minute, :second => second, :microsecond => microsecond}

包含朴素的映射/结构的任何映射/结构。[医]日期时间字段

second()

second() :: integer

std_offset()

std_offset() :: integer

以秒为单位的时区标准偏移量(夏季时间不为零)

time()

time() :: %{optional(any) => any, :hour => hour, :minute => minute, :second => second, :microsecond => microsecond}

包含时间字段的任何映射/结构

time_zone()

time_zone() :: String.t

根据IANA tz数据库(例如欧洲/苏黎世)的时区ID

utc_offset()

utc_offset() :: integer

UTC时区的偏移量(以秒为单位)。

year()

year() :: integer

zone_abbr()

zone_abbr() :: String.t

时区缩写(例如CET或CEST或BST等)

函数

compatible_calendars?(calendar, calendar)

compatible_calendars?(Calendar.calendar, Calendar.calendar) :: boolean

如果两个日历具有相同的开始新的一天的时间,则返回true,否则返回false

如果两个日历不兼容,则只能在它们之间转换日期时间和时间。如果它们是兼容的,这意味着我们也可以转换日期以及它们之间的天真日期时间。

回调

date_to_string(year, month, day)

date_to_string(year, month, day) :: String.t

根据日历将日期转换为字符串。

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

datetime_to_string(year, month, day, hour, minute, second, microsecond, time_zone, zone_abbr, utc_offset, std_offset) :: String.t

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

day_of_week(year, month, day)

day_of_week(year, month, day) :: non_neg_integer

计算星期从给定的yearmonthday

day_rollover_relative_to_midnight_utc()

day_rollover_relative_to_midnight_utc() :: day_fraction

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

在当日结束并且第二天开始的时候,这就是您的日历。

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

这一天的分数应尽可能以最简化的形式进行比较,以便快速进行比较。

实例

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

  • 如果在日历中,从日出开始新的一天,返回{1,4}。

  • 如果在日历中,新的一天从中午开始,返回{1,2}。

  • 如果在日历中,新的一天从日落开始,返回{3,4}。

days_in_month(year, month)

days_in_month(year, month) :: day

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

leap_year?(year)

leap_year?(year) :: boolean

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

闰年是比正常长的一年。确切意义取决于日历。日历必须返回false如果它不支持闰年的概念。

naive_datetime_from_iso_days(iso_days)

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

皈依t:iso_days到日历的日期时间格式。

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

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

将给定的日期时间(带时区)转换为t:iso_days格式。

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

naive_datetime_to_string(year, month, day, hour, minute, second, microsecond) :: String.t

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

time_from_day_fraction(day_fraction)

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

皈依t:day_fraction到日历的时间格式。

time_to_day_fraction(hour, minute, second, microsecond)

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

将给定时间转换为t:day_fraction格式。

time_to_string(hour, minute, second, microsecond)

time_to_string(hour, minute, second, microsecond) :: String.t

根据日历将时间转换为字符串。

valid_date?(year, month, day)

valid_date?(year, month, day) :: boolean

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

valid_time?(hour, minute, second, microsecond)

valid_time?(hour, minute, second, microsecond) :: boolean

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