User-visible changes from 1.0.0-beta1 onwards. See the project repository for more details.
No API changes; this release was purely to fix a problem with the NodaTime.Testing package.
API changes:
CalendarSystem.Id property that returns a unique ID for a
calendar system, along with the ForId() factory method and Ids static
property; ToString() now returns the calendar ID rather than the namec custom format specifier for local date values,
which includes the calendar ID, representing the calendar system; custom format specifier to parse both comma
and period for fractions of a second; InstantPattern.ExtendedIsoPattern,
LocalTimePattern.ExtendedIsoPattern, and
LocalDateTimePattern.ExtendedIsoPattern now accept both as separators
(issues 140 and 141)r standard pattern for LocalDateTime that includes
the calendar systemCreateWithInvariantInfo() method on the pattern types to
CreateWithInvariantCulture() (issue 137)Other:
API changes:
DateTimeZone.GetOffsetFromUtc() to DateTimeZone.GetUtcOffset() to
match the BCL (issue 121)LocalDate.FromWeekYearWeekAndDay() (issue 120)Tick, SecondOfDay and MillisecondOfDay properties removed from
time-based types (issue 103)NodaCultureInfo and NodaFormatInfo types (issue 131 and
related issues), removed the FormatInfo property and WithFormatInfo()
method on pattern types, and changed the culture-specific pattern factory
methods to take a CultureInfo rather than a NodaFormatInfoEmptyDateTimeZoneSourcesealed: PeriodPattern, BclDateTimeZoneProvider,
BclDateTimeZoneSource, DateTimeZoneCache, and ZoneInterval, along
with various exception types and
NodaTime.Testing.SingleTransitionDateTimeZoneTzdbDateTimeZoneSource
(VersionKey, etc) are now internalBug fixes:
BclDateTimeZone not working the same way as a BCL
TimeZoneInfo (issues 114, 115, and
122)Other:
API changes:
DateTimeZone from an ID:
IDateTimeZoneProvider (SPI for time zones) renamed to
IDateTimeZoneSource, along with similar renaming for the built-in
sourcesIDateTimeZoneProvider aimed at callers, with caching
assumedDateTimeZoneProviders with static properties to access the
built-in providers: TZDB, BCL and default (currently TZDB)DateTimeZone static methods in favour of always going
via an IDateTimeZoneProvider implementationDateTimeZoneCache now public and implements IDateTimeZoneProviderDateTimeZone no longer has internal abstract methods, making third-party
implementations possible (issue 77)DateTimeZone now implements IEquatable<DateTimeZone>, and documents what
it means for time zones to be equal (issue 81)OffsetDateTime representing a local date/time and an offset
from UTC, but not full time zone informationG, which is like g but using
"Z" for zero; also available as OffsetPattern.GeneralInvariantPatternWithZPeriod and PeriodBuilder no longer differentiate between absent and zero
components (to the extent that they did at all): Units has been removed
from Period, period formatting now omits all zero values unconditionally,
and the Year (etc) properties on PeriodBuilder are no longer nullable
(issue 90)Instant, LocalDate, LocalDateTime, and Offset in favour of the
pattern-based API (issue 87)Duration.ToString() and Interval.ToString() now return more descriptive
text
Removed DateTimeZone.GetSystemDefaultOrNull(); callers should use the
provider's GetSystemDefault() method and (if necessary) catch the
TimeZoneNotFoundException that it can throw (issue 61)
DateTimeZone.UtcId and DateTimeZone.IsFixed (issues 64
and 62)Duration (e.g.
Duration.OneStandardDay) in favour of the existing static methods; removed
MinValue and MaxValue, and added Epsilon (issue 70)Instant.BeginningOfTimeLabel and Instant.EndOfTimeLabelInstant.InIsoUtc renamed to InUtcInstant.UnixEpoch moved to NodaConstants.UnixEpoch;
NodaConstants.DateTimeEpochTicks replaced by BclEpochInstant.PlusTicks()LocalDate.LocalDateTime property changed to LocalDate.AtMidnight() method
(issue 56)LocalTime now implements IComparable<LocalTime> (issue 51)LocalTime constructor taking hours and minutes (issue 53)Offset, and renamed the "total"
properties to just Ticks and MillisecondsOffset.Create() methods (and moved them in slightly different form
in a new internal TestObjects class in NodaTime.Test)Period.ToDuration() (issue 55) and Period.CreateComparer()
(issue 69)Period.Empty renamed to Period.Zero (as part of issue 90)PeriodBuilder no longer implements IEquatable<PeriodBuilder>
(issue 91)SystemClock.SystemNow in favour of using SystemClock.Instance.Now
if you really have toZonedDateTime.ToOffsetDateTime(), which returns the OffsetDateTime
equivalent to a ZonedDateTimeRemoved the Buddhist Era (as there is no Buddhist calendar implementation)
NodaTime.Testing.StubClock renamed to FakeClock, and gains an
auto-advance option (issues 72 and 73)
NodaTime.Testing.TimeZones.SingleTransitionZone renamed to
SingleTransitionDateTimeZoneBug fixes: