Cldr Calendars v0.8.0 Cldr.Calendar.Interval View Source
Implements functions to return intervals and compare date intervals.
In particular it provides functions which return an
interval (as a Date.Range.t
) for years, quarters,
months, weeks and days.
Link to this section Summary
Functions
Compare two date ranges.
Returns a Date.Range.t
that represents
the day
.
Returns a Date.Range.t
that represents
the year
.
Returns a Date.Range.t
that represents
the quarter
.
Returns a Date.Range.t
that represents
the year
.
Returns a Date.Range.t
that represents
the year
.
Link to this section Functions
compare(r1, r2)
View Source
compare(range_1 :: Date.Range.t(), range_2 :: Date.Range.t()) ::
Cldr.Calendar.interval_relation()
compare(range_1 :: Date.Range.t(), range_2 :: Date.Range.t()) :: Cldr.Calendar.interval_relation()
Compare two date ranges.
Uses Allen's Interval Algebra to return one of 13 different relationships:
Relation | Converse |
---|---|
:precedes | :preceded_by |
:meets | :met_by |
:overlaps | :overlapped_by |
:finished_by | :finishes |
:contains | :during |
:starts | :started_by |
:equals | :equals |
Arguments
range_1
is aDate.Range.t
range_2
is aDate.Range.t
Returns
An atom representing the relationship between the two ranges.
Examples
iex> Cldr.Calendar.Interval.compare Cldr.Calendar.Interval.day(~D[2019-01-01]), Cldr.Calendar.Interval.day(~D[2019-01-02])
:meets
iex> Cldr.Calendar.Interval.compare Cldr.Calendar.Interval.day(~D[2019-01-01]), Cldr.Calendar.Interval.day(~D[2019-01-03])
:precedes
iex> Cldr.Calendar.Interval.compare Cldr.Calendar.Interval.day(~D[2019-01-03]), Cldr.Calendar.Interval.day(~D[2019-01-01])
:preceded_by
iex> Cldr.Calendar.Interval.compare Cldr.Calendar.Interval.day(~D[2019-01-02]), Cldr.Calendar.Interval.day(~D[2019-01-01])
:met_by
iex> Cldr.Calendar.Interval.compare Cldr.Calendar.Interval.day(~D[2019-01-02]), Cldr.Calendar.Interval.day(~D[2019-01-02])
:equals
day(date)
View Source
day(Date.t()) :: Date.Range.t()
day(Date.t()) :: Date.Range.t()
Returns a Date.Range.t
that represents
the day
.
The range is enumerable.
Arguments
year
is anyyear
forcalendar
day
is anyday
in theyear
forcalendar
calendar
is any module that implements theCalendar
andCldr.Calendar
behaviours. The default isCldr.Calendar.Gregorian
.
Returns
- A
Date.Range.t()
representing the the enumerable days in theweek
Examples
iex> Cldr.Calendar.Interval.day 2019, 52, Cldr.Calendar.US
#DateRange<%Date{calendar: Cldr.Calendar.US, day: 21, month: 2, year: 2019}, %Date{calendar: Cldr.Calendar.US, day: 21, month: 2, year: 2019}>
iex> Cldr.Calendar.Interval.day 2019, 92, Cldr.Calendar.NRF
#DateRange<%Date{calendar: Cldr.Calendar.NRF, day: 1, month: 14, year: 2019}, %Date{calendar: Cldr.Calendar.NRF, day: 1, month: 14, year: 2019}>
Cldr.Calendar.Interval.day 2019, 8, Cldr.Calendar.ISOWeek
#DateRange<%Date{calendar: Cldr.Calendar.ISOWeek, day: 1, month: 2, year: 2019}, %Date{calendar: Cldr.Calendar.ISOWeek, day: 1, month: 2, year: 2019}>
day(year, day, calendar \\ Cldr.Calendar.Gregorian)
View Source
day(Calendar.year(), Calendar.day(), Cldr.Calendar.calendar()) :: Date.Range.t()
day(Calendar.year(), Calendar.day(), Cldr.Calendar.calendar()) :: Date.Range.t()
month(date)
View Source
month(Date.t()) :: Date.Range.t()
month(Date.t()) :: Date.Range.t()
Returns a Date.Range.t
that represents
the year
.
The range is enumerable.
Arguments
year
is anyyear
forcalendar
month
is anymonth
in theyear
forcalendar
calendar
is any module that implements theCalendar
andCldr.Calendar
behaviours. The default isCldr.Calendar.Gregorian
.
Returns
- A
Date.Range.t()
representing the the enumerable days in themonth
Examples
iex> Cldr.Calendar.Interval.month 2019, 3, Cldr.Calendar.UK
#DateRange<%Date{calendar: Cldr.Calendar.UK, day: 1, month: 3, year: 2019}, %Date{calendar: Cldr.Calendar.UK, day: 30, month: 3, year: 2019}>
iex> Cldr.Calendar.Interval.month 2019, 3, Cldr.Calendar.US
#DateRange<%Date{calendar: Cldr.Calendar.US, day: 1, month: 3, year: 2019}, %Date{calendar: Cldr.Calendar.US, day: 31, month: 3, year: 2019}>
month(year, month, calendar \\ Cldr.Calendar.Gregorian)
View Source
month(Calendar.year(), Calendar.month(), Cldr.Calendar.calendar()) ::
Date.Range.t()
month(Calendar.year(), Calendar.month(), Cldr.Calendar.calendar()) :: Date.Range.t()
quarter(date)
View Source
quarter(Date.t()) :: Date.Range.t()
quarter(Date.t()) :: Date.Range.t()
Returns a Date.Range.t
that represents
the quarter
.
The range is enumerable.
Arguments
year
is anyyear
forcalendar
quarter
is anyquarter
in theyear
forcalendar
calendar
is any module that implements theCalendar
andCldr.Calendar
behaviours. The default isCldr.Calendar.Gregorian
.
Returns
- A
Date.Range.t()
representing the the enumerable days in thequarter
Examples
iex> Cldr.Calendar.Interval.quarter 2019, 2, Cldr.Calendar.UK
#DateRange<%Date{calendar: Cldr.Calendar.UK, day: 1, month: 4, year: 2019}, %Date{calendar: Cldr.Calendar.UK, day: 30, month: 6, year: 2019}>
iex> Cldr.Calendar.Interval.quarter 2019, 2, Cldr.Calendar.ISOWeek
#DateRange<%Date{calendar: Cldr.Calendar.ISOWeek, day: 1, month: 14, year: 2019}, %Date{calendar: Cldr.Calendar.ISOWeek, day: 7, month: 26, year: 2019}>
quarter(year, quarter, calendar \\ Cldr.Calendar.Gregorian)
View Source
quarter(Calendar.year(), Cldr.Calendar.quarter(), Cldr.Calendar.calendar()) ::
Date.Range.t()
quarter(Calendar.year(), Cldr.Calendar.quarter(), Cldr.Calendar.calendar()) :: Date.Range.t()
week(date)
View Source
week(Date.t()) :: Date.Range.t()
week(Date.t()) :: Date.Range.t()
Returns a Date.Range.t
that represents
the year
.
The range is enumerable.
Arguments
year
is anyyear
forcalendar
week
is anyweek
in theyear
forcalendar
calendar
is any module that implements theCalendar
andCldr.Calendar
behaviours. The default isCldr.Calendar.Gregorian
.
Returns
A
Date.Range.t()
representing the the enumerable days in theweek
or{:error, :not_defined}
if the calendar does not support the concept of weeks
Examples
iex> Cldr.Calendar.Interval.week 2019, 52, Cldr.Calendar.US
#DateRange<%Date{calendar: Cldr.Calendar.US, day: 22, month: 12, year: 2019}, %Date{calendar: Cldr.Calendar.US, day: 28, month: 12, year: 2019}>
iex> Cldr.Calendar.Interval.week 2019, 52, Cldr.Calendar.NRF
#DateRange<%Date{calendar: Cldr.Calendar.NRF, day: 1, month: 52, year: 2019}, %Date{calendar: Cldr.Calendar.NRF, day: 7, month: 52, year: 2019}>
iex> Cldr.Calendar.Interval.week 2019, 52, Cldr.Calendar.ISOWeek
#DateRange<%Date{calendar: Cldr.Calendar.ISOWeek, day: 1, month: 52, year: 2019}, %Date{calendar: Cldr.Calendar.ISOWeek, day: 7, month: 52, year: 2019}>
iex> Cldr.Calendar.Interval.week 2019, 52, Cldr.Calendar.Julian
{:error, :not_defined}
week(year, week, calendar \\ Cldr.Calendar.Gregorian)
View Source
week(Calendar.year(), Cldr.Calendar.week(), Cldr.Calendar.calendar()) ::
Date.Range.t()
week(Calendar.year(), Cldr.Calendar.week(), Cldr.Calendar.calendar()) :: Date.Range.t()
year(date)
View Source
year(Date.t()) :: Date.Range.t()
year(Date.t()) :: Date.Range.t()
Returns a Date.Range.t
that represents
the year
.
The range is enumerable.
Arguments
year
is anyyear
forcalendar
calendar
is any module that implements theCalendar
andCldr.Calendar
behaviours. The default isCldr.Calendar.Gregorian
.
Returns
- A
Date.Range.t()
representing the the enumerable days in theyear
Examples
iex> Cldr.Calendar.Interval.year 2019, Cldr.Calendar.UK
#DateRange<%Date{calendar: Cldr.Calendar.UK, day: 1, month: 1, year: 2019}, %Date{calendar: Cldr.Calendar.UK, day: 31, month: 12, year: 2019}>
iex> Cldr.Calendar.Interval.year 2019, Cldr.Calendar.NRF
#DateRange<%Date{calendar: Cldr.Calendar.NRF, day: 1, month: 1, year: 2019}, %Date{calendar: Cldr.Calendar.NRF, day: 7, month: 52, year: 2019}>
year(year, calendar \\ Cldr.Calendar.Gregorian)
View Source
year(Calendar.year(), Cldr.Calendar.calendar()) :: Date.Range.t()
year(Calendar.year(), Cldr.Calendar.calendar()) :: Date.Range.t()