<commit_before>@Title="Version history"

User-visible changes from 1.0.0-beta1 onwards. See the
[project repository](https://github.com/nodatime/nodatime) for more
details.

## 2.2.0, released 2017-07-09 and 2017-07-14 with tzdb 2017b

This was an accidental release, immediately delisted on nuget.org but later relisted due to issues with
it actually being visible anyway. (The NodaTime.Testing package was only released on July 14th.)

It's exactly the same as 2.1.0: upgrading from 2.1.0 to 2.2.0 should be a no-op.

## 2.1.0, released 2017-07-09 with tzdb 2017b

- Some optimizations to `Period` which didn't get into 2.0.x (most `Duration` ones did)
- Making the misnamed `ToDayOfWeek` extension method obsolete
- Some extra functionality `ParseResult`
- [SourceLink](https://github.com/ctaggart/SourceLink) support
- Add `LocalDate.MinIsoValue`/`MaxIsoValue`

(Beta 1 was released on 2017-07-05. Only change since beta 1 was the final addition listed above.)

## 1.4.0, released 2017-07-09 with tzdb 2017b

Release to enable migration to 2.0.

- `ZonedClock` and `WeekYearRules` backported from 2.0
- Extension methods for `IClock` and `IDateTimeZoneSource` to allow smoother migration
- Members removed in 2.0 are obsolete where possible:
 - In most cases, the message indicates how to migrate code ready for 2.0
 - In some cases, members have been removed with no equivalent (e.g. `Century` properties)
 - The `IsoDayOfWeek` properties which have been renamed to `DayOfWeek` in 2.0 have *not* been
   made obsolete as there'd be no good way of dealing with this. (Just rename uses *after* migrating to 2.0.)

(Beta 1 was released on 2017-07-04. No changes from beta to GA.)

## 2.0.3, released 2017-06-13 with tzdb 2017b

Patch release: optimization only:

- Fixes [issue 837]: `Instant.FromUnixTimeSeconds` slow (fix in `Duration.FromXyz`)
- Fixes [issue 838]: Improve `Duration` performance further

## 2.0.2, released 2017-05-22 with tzdb 2017b

Patch release: bugfix only:

- Fixes [issue 824]: incorrect Period computations.

## 2.0.1, released 2017-05-05 with tzdb 2017b

Patch release: bugfixes only:

- Fixes [issue 743]: handling of time zones on Mono on Linux
- Fixes [issue 801]: `LocalDate` constructor validation
- Fixes [issue 807]: `LocalTime` validation

## 2.0, released 2017-03-31 with tzdb 2017b

Major release: do *not* expect to be able to upgrade from 1.x without making adjustments to your code; please
read the list of breaking changes and see the [Noda Time 1.x to 2.0 migration guide](/unstable/userguide/migration-to-2)
for full details.

New features include:

- Nanosecond precision
- .NET Core support: 2.0 targets `netstandard1.3` and `net45` TFMs
- Improved performance on many `LocalDate`-related operations due to new internal representation
- Time zone reimplementation
- Many extension methods, including on BCL types, in the `NodaTime.Extensions` namespace
- Date and time adjusters, e.g. `var monthEnd = date.With(DateAdjusters.EndOfMonth)`
- Extension methods for testing (to allow things like `19.June(1976)`) in the `NodaTime.Testing.Extensions` namespace
- `AnnualDate` to represent events like birthdays and anniversaries
- `DateInterval` - a `LocalDate`-based interval type
- `ZonedClock` - a wrapper around `IClock` with a time zone, making it easier to get the current day/time in a time zone repeatedly
- `WeekYearRules` - a calendar-neutral way of extracting week-year information
- Simpler calendar access using properties in `CalendarSystem`
- Embedded date/time patterns in LocalDateTime, `ZonedDateTime` and `OffsetDateTime` patterns

Breaking changes:

- When passing an `IFormatProvider`, only `CultureInfo` and `DateTimeFormatInfo` values can be used;
  any other non-null reference will now throw an exception. When a `DateTimeFormatInfo` is provided,
  the invariant culture is used for resource lookups and text comparisons.
- Removed `LocalDateTime` constructors accepting tick values
- Changed `LocalTime` constructors accepting tick values (tick-of-second and tick-of-millisecond)
  to be static factory methods.
- Renamed all static pattern properties to remove the `Pattern` suffix
- Renamed the `IsoDayOfWeek` properties in `LocalDate`, `LocalDateTime`, `OffsetDateTime`
  and `ZonedDateTime` to just `DayOfWeek`, and removed the previous numeric `DayOfWeek` properties.
- Removed members which had already been made obsolete in the 1.x release line, including
  support for the legacy resource-based time zone data format.
- Removed `Instant(long)` constructor from the public API.
- Removed `LocalTime.LocalDateTime` property.
- Changed the behavior of the `LenientResolver` to more closely match real-world usage.
  This also affects `DateTimeZone.AtLeniently` and `LocalDateTime.InZoneLeniently`.
   - For ambiguous values, the lenient resolver used to return the later of the two possible instants.
    It now returns the *earlier* of the two possible instants.  For example, if 01:00 is ambiguous, it used to return
    1:00 standard time and it now will return 01:00 *daylight* time.
  - For skipped values, the lenient resolver used to return the instant corresponding to the first possible local time
    following the "gap".  It now returns the instant that would have occurred if the gap had not existed.  This
    corresponds to a local time that is shifted forward by the duration of the gap.  For example, if values from
    02:00 to 02:59 were skipped, a value of 02:30 used to return 03:00 and it will now return 03:30.
- `Period` and `PeriodBuilder` properties for date-based values (years, months, weeks, days) are now of type `int` rather than `long`.<commit_msg>Consistently used three spaces before a nested list item.<commit_after>@Title="Version history"

User-visible changes from 1.0.0-beta1 onwards. See the
[project repository](https://github.com/nodatime/nodatime) for more
details.

## 2.2.0, released 2017-07-09 and 2017-07-14 with tzdb 2017b

This was an accidental release, immediately delisted on nuget.org but later relisted due to issues with
it actually being visible anyway. (The NodaTime.Testing package was only released on July 14th.)

It's exactly the same as 2.1.0: upgrading from 2.1.0 to 2.2.0 should be a no-op.

## 2.1.0, released 2017-07-09 with tzdb 2017b

- Some optimizations to `Period` which didn't get into 2.0.x (most `Duration` ones did)
- Making the misnamed `ToDayOfWeek` extension method obsolete
- Some extra functionality `ParseResult`
- [SourceLink](https://github.com/ctaggart/SourceLink) support
- Add `LocalDate.MinIsoValue`/`MaxIsoValue`

(Beta 1 was released on 2017-07-05. Only change since beta 1 was the final addition listed above.)

## 1.4.0, released 2017-07-09 with tzdb 2017b

Release to enable migration to 2.0.

- `ZonedClock` and `WeekYearRules` backported from 2.0
- Extension methods for `IClock` and `IDateTimeZoneSource` to allow smoother migration
- Members removed in 2.0 are obsolete where possible:
   - In most cases, the message indicates how to migrate code ready for 2.0
   - In some cases, members have been removed with no equivalent (e.g. `Century` properties)
   - The `IsoDayOfWeek` properties which have been renamed to `DayOfWeek` in 2.0 have *not* been
     made obsolete as there'd be no good way of dealing with this. (Just rename uses *after* migrating to 2.0.)

(Beta 1 was released on 2017-07-04. No changes from beta to GA.)

## 2.0.3, released 2017-06-13 with tzdb 2017b

Patch release: optimization only:

- Fixes [issue 837]: `Instant.FromUnixTimeSeconds` slow (fix in `Duration.FromXyz`)
- Fixes [issue 838]: Improve `Duration` performance further

## 2.0.2, released 2017-05-22 with tzdb 2017b

Patch release: bugfix only:

- Fixes [issue 824]: incorrect Period computations.

## 2.0.1, released 2017-05-05 with tzdb 2017b

Patch release: bugfixes only:

- Fixes [issue 743]: handling of time zones on Mono on Linux
- Fixes [issue 801]: `LocalDate` constructor validation
- Fixes [issue 807]: `LocalTime` validation

## 2.0, released 2017-03-31 with tzdb 2017b

Major release: do *not* expect to be able to upgrade from 1.x without making adjustments to your code; please
read the list of breaking changes and see the [Noda Time 1.x to 2.0 migration guide](/unstable/userguide/migration-to-2)
for full details.

New features include:

- Nanosecond precision
- .NET Core support: 2.0 targets `netstandard1.3` and `net45` TFMs
- Improved performance on many `LocalDate`-related operations due to new internal representation
- Time zone reimplementation
- Many extension methods, including on BCL types, in the `NodaTime.Extensions` namespace
- Date and time adjusters, e.g. `var monthEnd = date.With(DateAdjusters.EndOfMonth)`
- Extension methods for testing (to allow things like `19.June(1976)`) in the `NodaTime.Testing.Extensions` namespace
- `AnnualDate` to represent events like birthdays and anniversaries
- `DateInterval` - a `LocalDate`-based interval type
- `ZonedClock` - a wrapper around `IClock` with a time zone, making it easier to get the current day/time in a time zone repeatedly
- `WeekYearRules` - a calendar-neutral way of extracting week-year information
- Simpler calendar access using properties in `CalendarSystem`
- Embedded date/time patterns in LocalDateTime, `ZonedDateTime` and `OffsetDateTime` patterns

Breaking changes:

- When passing an `IFormatProvider`, only `CultureInfo` and `DateTimeFormatInfo` values can be used;
  any other non-null reference will now throw an exception. When a `DateTimeFormatInfo` is provided,
  the invariant culture is used for resource lookups and text comparisons.
- Removed `LocalDateTime` constructors accepting tick values
- Changed `LocalTime` constructors accepting tick values (tick-of-second and tick-of-millisecond)
  to be static factory methods.
- Renamed all static pattern properties to remove the `Pattern` suffix
- Renamed the `IsoDayOfWeek` properties in `LocalDate`, `LocalDateTime`, `OffsetDateTime`
  and `ZonedDateTime` to just `DayOfWeek`, and removed the previous numeric `DayOfWeek` properties.
- Removed members which had already been made obsolete in the 1.x release line, including
  support for the legacy resource-based time zone data format.
- Removed `Instant(long)` constructor from the public API.
- Removed `LocalTime.LocalDateTime` property.
- Changed the behavior of the `LenientResolver` to more closely match real-world usage.
  This also affects `DateTimeZone.AtLeniently` and `LocalDateTime.InZoneLeniently`.
   - For ambiguous values, the lenient resolver used to return the later of the two possible instants.
     It now returns the *earlier* of the two possible instants.  For example, if 01:00 is ambiguous, it used to return
     1:00 standard time and it now will return 01:00 *daylight* time.
   - For skipped values, the lenient resolver used to return the instant corresponding to the first possible local time
     following the "gap".  It now returns the instant that would have occurred if the gap had not existed.  This
     corresponds to a local time that is shifted forward by the duration of the gap.  For example, if values from
     02:00 to 02:59 were skipped, a value of 02:30 used to return 03:00 and it will now return 03:30.
- `Period` and `PeriodBuilder` properties for date-based values (years, months, weeks, days) are now of type `int` rather than `long`.
{'fraction_non_alphanumeric': 0.07821573112792539, 'fraction_numerical': 0.03994369171212388, 'mean_word_length': 4.346660395108184, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3389137', 'n_tokens_mistral': 3574, 'n_tokens_neox': 3185, 'n_words': 1493}