Changelog for Cldr Calendars v1.1.0
This is the changelog for Cldr Calendars v1.1.0 released on August 30th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
Adds
<calendar>.add/3
to add:year
or:month
to a naive datetime. This function supports the library calendar_interval allowing intervals to be used withex_cldr_calendars
[https://hex.pm/packages/ex_cldr_calendars]. The mid-term objective is to addadd/3
to theCalendar
behaviour and thereby also simplify the interface toCalendarInterval
.Changes the output of
to_string/1
to consistently use the full name of the calendar module, not an appreviated name.
Changelog for Cldr Calendars v1.0.0
This is the changelog for Cldr Calendars v1.0.0 released on June 16th, 2019. For older changelogs please consult the release tag on GitHub
Breaking changes
The format produced by inspecting a Date (or DateTime or NaiveDateTime) has changed. The parsing of dates in
sigil_d
(the~d
sigil) has also changed in order to facilitate roundtrip conversions. Previously a date would inspect as (using the NRF calendar)~d[2019-W01-1]NRF
. It now inspects as~d[2019-W01-1 NRF]
. The same approach is used for all calendars. See the examples inCldr.Calendar.Sigils
. This change is applicable to Elixir 1.10 and later.The calendar configuration option
:min_days
has been renamed:min_days_in_first_week
. The configuration option:day
has been renamed to:day_of_week
and the option:month
has been renamed to:month_of_year
. An exception will be raised if existing calendars are not updated.An exception will be raised if a calendar is configured with an unknown option.
Enhancements
Implements
inspect_date/4
,inspect_datetime/11
,inspect_naive_datetime/8
andinspect_time/5
for allCldr.Calendar
calendars. This implementation supports the revisedInspect
protocol implementation forDate
,Time
,DateTime
andNaiveDateTime
structs. The purpose of that change is to allow customer calendars to be inspected. This change is applicable to Elixir 1.10 and later.Adds
Cldr.Calendar.week_of_month/1
andCldr.Calendar
callbackweek_of_month/4
to return the week of a month. The weeks are calculated on the basis of the calendar configuration. As a result, the week of the month, like the week of the year, may be in a different Gregorian year and month compared to the specified date.Adds
Cldr.Calendar.weeks_in_year/1
to return the number of weeks in a year.Adds a calendar configuration where weeks start on the first day of the year. This configuration is valid only for
:month
based calendars. The configuration optionday: :first
triggers this behaviour. This configuration can result in the last week of the year being less than 7 days.Adds
Cldr.Calendar.inspect/2
that can be used as an:inspect_fun
option inInspect.Opts
for Elixir version 1.9. It will not be required for Elixir 1.10 and later since this commit introducesinspect_*
callbacks forDate
,Time
,DateTime
andNaiveDateTime
. An:inspect_fun
can be configured inIEx
by:
iex> IEx.configure(inspect: [inspect_fun: &Cldr.Calendar.inspect/2])
:ok
Bug Fixes
Ensure that
Cldr.Calendar
callbacks return aCalendar.ISO
calendar if called with one (either as part of a date or as a separate argument).Ensure the return calendar types of a an Interval are
Calendar.ISO
is the date provided isCalendar.ISO
Fix
Cldr.Calendar.plus/4
for:months
when the month wraps into the previous year(s)Fix
sigil_d
to correctly parse ISO Week dates that have only a single digit day
Changelog for Cldr Calendars v0.9.0
This is the changelog for Cldr Calendars v0.9.0 released on June 9th, 2019. For older changelogs please consult the release tag on GitHub
Breaking changes
- Depends on Elixir 1.8 and above since it requires recent
Calendar
functionality.
Changelog for Cldr Calendars v0.8.0
This is the changelog for Cldr v0.8.0 released on June 8th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
Adds option
:type
toCldr.Calendar.localize/3
. This determines the format type to be localized. The valid types are:format
(the default) or:stand_alone
.Add
Cldr.Calendar.day_periods/2
to support localization of the day periods of a timeAdd
Cldr.Calendar.default_calendar/0
. ReturnsCldr.Calendar.Gregorian
Add
Cldr.Calendar.default_cldr_calendar/0
. Returns:gregorian
Changelog for Cldr Calendars v0.7.0
This is the changelog for Cldr Calendars v0.7.0 released on June 1st, 2019. For older changelogs please consult the release tag on GitHub
Breaking Changes
- Moved
year/1
,quarter/1
,month/1
,week/1
andday/1
to a new moduleCldr.Calendar.Interval
Enhancements
Adds
Cldr.Calendar.Interval.compare/2
to compare two intervals (date ranges) using Allen's Interval Algebra taxonomy.Defaults the calendar to
Cldr.Calendar.Gregorian
forCldr.Calendar.Interval.year/2
,Cldr.Calendar.Interval.quarter/3
,Cldr.Calendar.Interval.month/3
,Cldr.Calendar.Interval.week/3
andCldr.Calendar.Interval.day/3
Changelog for Cldr Calendars v0.6.0
This is the changelog for Cldr Calendars v0.6.0 released on April 28th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
- Remove the need for nimble_csv as a dependency
Changelog for Cldr Calendars v0.5.0
This is the changelog for Cldr Calendars v0.5.0 released on April 21th, 2019. For older changelogs please consult the release tag on GitHub
Breaking changes
Cldr.Calendar.localize/3
for:days_of_week
now returns a list of 2-tuples that are of the format{day_of_week, day_name}
.
Enhancements
- Add
Cldr.Calendar.localize/6
which localises numbers as part of a date without parameter checking. This is considered a private implementation for now.
Changelog for Cldr Calendars v0.4.1
This is the changelog for Cldr Calendars v0.4.1 released on April 19th, 2019. For older changelogs please consult the release tag on GitHub
Bug Fixes
- Fix calculation of
days_in_month
for the last month in long year of a week-based calendar
Changelog for Cldr Calendars v0.4.0
This is the changelog for Cldr Calendars v0.4.0 released on April 19th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
Adds
Cldr.Calendar.interval_stream/3
which returns a stream function that when enumerated generates a list of dates with a specified precision of either:years
,:quarters
,:months
,:weeks
or:days
. This function has the same arguments and generates the same results asCldr.Calendar.interval/3
except it generates the results lazily.Adds
:days_of_week
option toCldr.Calendar.localize/3
which returns a list of the localized names of the days of the week in calendar order.Adds
calendar_base/0
to identify whether the calendar is week or month based.
Bug Fixes
- Fix
Cldr.Calendar.day_of_week/1
for week-based calendars
Changelog for Cldr Calendars v0.3.0
This is the changelog for Cldr Calendars v0.3.0 released on April 16th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
- Adds
Cldr.Calendar.interval/3
which generates an enumerable list of dates with a specified precision of either:years
,:quarters
,:months
,:weeks
or:days
.
Examples:
iex> import Cldr.Calendar.Sigils
Cldr.Calendar.Sigils
iex> d = ~d[2019-01-31]
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 1, year: 2019}
iex> d2 = ~d[2019-05-31]
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 5, year: 2019}
iex> Cldr.Calendar.interval d, 3, :months
[
%Date{calendar: Cldr.Calendar.Gregorian, day: 28, month: 2, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 3, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 30, month: 4, year: 2019}
]
iex> Cldr.Calendar.interval d, d2, :months
[
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 1, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 28, month: 2, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 3, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 30, month: 4, year: 2019},
%Date{calendar: Cldr.Calendar.Gregorian, day: 31, month: 5, year: 2019}
]
Changelog for Cldr Calendars v0.2.0
This is the changelog for Cldr Calendars v0.2.0 released on April 14th, 2019. For older changelogs please consult the release tag on GitHub
Breaking Changes
All calendars now return
{year, month, day}
tuples fromdate_from_iso_days/1
. Previously in some cases they returned aDate.t
first_day_of_year/1
andlast_day_of_year/1
,first_gregorian_day_of_year/1
andlast_gregorian_day_of_year/1
now all return aDate.t
or an error tuple. Previously the returned result types were inconsistent.Remove
first_gregorian_day_of_year/1
andlast_gregorian_day_of_year/1
fromCldr.Calendar
callbacks.
Enhancements
- Adds
Cldr.Calendar.Julian
implementing the Julian calendar. This calendar does not implementweek/2
,week_of_year/3
oriso_week_of_year/3
.
Bug Fixes
- Fixes calculating negative offsets for months in a week-based calendar. Thanks to @bglusman. Closes #2.
Changelog for Cldr Calendars v0.1.0
This is the changelog for Cldr Calendars v0.1.0 released on April 5th, 2019. For older changelogs please consult the release tag on GitHub
Enhancements
- Initial release. See the README for a description of this project.