Releases: chronotope/chrono
v0.4.10
Compatibility notes
- Putting some functionality behind an
alloc
feature to improve no-std support (in #341) means that if you were relying on chrono withno-default-features
and using any of the functions that require alloc support (i.e. any of the string-generating functions liketo_rfc3339
) you will need to add thealloc
feature in your Cargo.toml.
Improvements
DateTime::parse_from_str
is more than 2x faster in some cases. (@michalsrb #358)- Significant improvements to no-std and alloc support (This should also make many format/serialization operations induce zero unnecessary allocations) (@CryZe #341)
Features
- Functions that were accepting
Iterator
ofItem
s (for exampleformat_with_items
) now acceptIterator
ofBorrow<Item>
, so one can use values or references. (@michalsrb #358) - Add built-in support for structs with nested
Option<Datetime>
etc fields (@manifest #302)
Internal/doc improvements
- Use markdown footnotes on the
strftime
docs page (@qudlibetor #359) - Migrate from
try!
->?
(question mark) because it is now emitting deprecation warnings and has been stable since rustc 1.13.0 - Deny dead code
v0.4.9
Fixes
- Make Datetime arithmatic adjust their offsets after discovering their new timestamps (@quodlibetor #337)
- Put
wasm-bindgen
related code and dependencies behind awasmbind
feature gate. (@quodlibetor #335)
v0.4.7
Fixes
- Disable libc default features so that CI continues to work on rust 1.13
- Fix panic on negative inputs to timestamp_millis (@cmars #292)
- Make
LocalResult
Copy/Eq/Hash
Features
- Add
std::convert::From
conversions between the different timezone formats (@mqudsi #271) - Add
timestamp_nanos
methods (@jean-airoldie #308) - Documentation improvements
v0.4.6
v0.4.5
Features
- Added several more serde deserialization helpers (@novacrazy #258)
- Enabled all features on the playground (@davidtwco #267)
- Derive
Hash
onFixedOffset
(@LuoZijun #254) - Improved docs (@storyfeet #261, @quodlibetor #252)
v0.4.4
v0.4.3
Features
- Added methods to DateTime/NaiveDateTime to present the stored value as a number of nanoseconds since the UNIX epoch (@HarkonenBade #247)
- Added a serde serialise/deserialise module for nanosecond timestamps. (@HarkonenBade #247)
- Added "Permissive" timezone parsing which allows a numeric timezone to be specified without minutes. (@quodlibetor #242)
v0.4.2
Deprecations
- More strongly deprecate RustcSerialize: remove it from documentation unless the feature is enabled, issue a deprecation warning if the rustc-serialize feature is enabled (@quodlibetor #174)
Features
v0.4.1
Bug Fixes
- Allow parsing timestamps with subsecond precision (@jonasbb)
- RFC2822 allows times to not include the second (@upsuper)
Features
- New
timestamp_millis
method onDateTime
andNaiveDateTim
that returns number of milliseconds since the epoch. (@quodlibetor) - Support exact decimal width on subsecond display for RFC3339 via a new
to_rfc3339_opts
method onDateTime
(@dekellum) - Use no_std-compatible num dependencies (@cuviper)
- Add
SubsecRound
trait that allows rounding to the nearest second (@dekellum)
v0.4.0
Original annoucement: https://users.rust-lang.org/t/chrono-0-4-0-is-out/11466.
The new version of Chrono, the date and time library for Rust, has been released.
This version fixes the dependency issues raised in 0.3.1 (in lieu of this release, 0.3.1 is now yanked as well) while moving towards the more idiomatic API convention. This version was developed in relatively heavy time constraints, but I have managed to include several goodies:
DateTime
types can now be serialized to, or deserialized from the integral UNIX timestamp.DateTime
types andstd::time::SystemTime
can be freely converted back and forth viaFrom
.IsoWeek
type has been introduced.- The documentation has been streamlined by removing intermediate implementation modules and accounting for several minor but essential suggestions.
This was originally planned as a minor release but was pushed to a major release due to the compatibility concern raised.
Added
-
IsoWeek
has been added for the ISO week without time zone. -
The
+=
and-=
operators againsttime::Duration
are now supported forNaiveDate
,NaiveTime
andNaiveDateTime
. (#99)(Note that this does not invalidate the eventual deprecation of
time::Duration
.) -
SystemTime
andDateTime<Tz>
types can be now converted to each other viaFrom
. Due to the obvious lack of time zone information inSystemTime
, the forward direction is limited toDateTime<Utc>
andDateTime<Local>
only.
Changed
-
Intermediate implementation modules have been flattened (#161), and
UTC
has been renamed toUtc
in accordance with the current convention (#148).The full list of changes is as follows:
Before After chrono::date::Date
chrono::Date
chrono::date::MIN
chrono::MIN_DATE
chrono::date::MAX
chrono::MAX_DATE
chrono::datetime::DateTime
chrono::DateTime
chrono::naive::time::NaiveTime
chrono::naive::NaiveTime
chrono::naive::date::NaiveDate
chrono::naive::NaiveDate
chrono::naive::date::MIN
chrono::naive::MIN_DATE
chrono::naive::date::MAX
chrono::naive::MAX_DATE
chrono::naive::datetime::NaiveDateTime
chrono::naive::NaiveDateTime
chrono::offset::utc::UTC
chrono::offset::Utc
chrono::offset::fixed::FixedOffset
chrono::offset::FixedOffset
chrono::offset::local::Local
chrono::offset::Local
chrono::format::parsed::Parsed
chrono::format::Parsed
With an exception of
Utc
, this change does not affect any direct usage ofchrono::*
orchrono::prelude::*
types. -
Datelike::isoweekdate
is replaced byDatelike::iso_week
which only returns the ISO week.The original method used to return a tuple of year number, week number and day of the week, but this duplicated the
Datelike::weekday
method and it had been hard to deal with the raw year and week number for the ISO week date. This change isolates any logic and API for the week date into a separate type. -
NaiveDateTime
andDateTime
can now be deserialized from an integral UNIX timestamp. (#125)This turns out to be very common input for web-related usages. The existing string representation is still supported as well.
-
chrono::serde
andchrono::naive::serde
modules have been added for the serialization utilities. (#125)Currently they contain the
ts_seconds
modules that can be used to serializeNaiveDateTime
andDateTime
values into an integral UNIX timestamp. This can be combined with Serde's[de]serialize_with
attributes to fully support the (de)serialization to/from the timestamp.For rustc-serialize, there are separate
chrono::TsSeconds
andchrono::naive::TsSeconds
types that are newtype wrappers implementing different (de)serialization logics. This is a suboptimal API, however, and it is strongly recommended to migrate to Serde.
Fixed
-
The major version was made to fix the broken Serde dependency issues. (#146, #156, #158, #159)
The original intention to technically break the dependency was to facilitate the use of Serde 1.0 at the expense of temporary breakage. Whether this was appropriate or not is quite debatable, but it became clear that there are several high-profile crates requiring Serde 0.9 and it is not feasible to force them to use Serde 1.0 anyway.
To the end, the new major release was made with some known lower-priority breaking changes. 0.3.1 is now yanked and any remaining 0.3 users can safely roll back to 0.3.0.