- We have splitted `Offset` into `Offset` and `OffsetState` (name
changes in consideration). The former is used to construct and convert
local or UTC date, and the latter is used to store the UTC offset
inside constructed values. Some offsets are their own states as well.
- This uses lots of associated types which implementation is still in
flux. Currently it crashes with debuginfo enabled. We've temporarily
disabled debuginfo from `Cargo.toml`.
- This technically allows a conversion to the local time, but not yet
tested.
so that we can safely implement `FromStr` traits for those types.
also updates READMEs and rewires `%+` specifier of `StrftimeItems`
to a new RFC 3339 formatting item.
- Format string is internally represented as a series of formatting
items. Items can be directly given to now-public `format::format`
function as well.
- Format string parser is separated to `format::strftime` module.
This is to allow for potentional alternative formatting syntaxes.
- `DelayedFormat` now receives an iterator for formatting items.
- Every type modulo `LocalResult` and `Offset` now implements
`std::fmt::String`, so `.to_string()` can be used.
The exact format has been changed for better looking output.
- `std::fmt::Show` are intended for "stricter" output,
which mostly means the strict ISO 8601 format.
`DelayedFormat` also implements this, but only for inspection.
- `Offset` should implement `Show` but can omit `String`.
The old `name` method is merged into `String` implementations.
- Feature flags used are all accepted.
- Orphan check workaround is no longer required.
- Impl reachability rules prevent the addition of `Duration + others`,
as `Duration` is not implemented in this crate. Removed the impl;
use `others + Duration` as a workaround.
Added 'use' statements for cmd::Ordering, ops::{Add, Sub}, borrow::IntoCow, num::ToPrimitive
Changed deriving -> derive. Changed [x, ..N] -> [x; N].
Made format(f: &fmt::Formatter) return fmt::Result instead of
IoResult. Had to raise generic errors in a couple of cases where
IoResult's fields were being set (but these errors were being thrown
out anyway).
Temporarily set #![feature(old_orphan_check)] because
Thanks for @eddyb for explaining the format() situation.
- `Date/Time - Duration` is now supported. (duh!)
- `with_offset` methods have been added.
- `LocalResult` now implements common traits.
- `LocalResult` has several methods to propagate errors.
this makes the initialization from untrusted sources easier
(`off.ymd_opt(y,m,d).and_hms_opt(h,n,s).single()`).
- `num` dependency is gone. It was only used for floored division
and it is not hard to copy only that portion from num.
- `Duration + Date` (or so) was blocked by rust-lang/rust#7590,
which has been subsequently fixed.
- Removed unused `unsafe` checks.
`Duration` now has a `to_tuple` method which corresponds to
the original `(dur.ndays(), dur.nseconds(), dur.nnanoseconds())`.
new `num_*s()` methods in `Duration` always return the integral
number of specified units in the duration.
cf. rust-lang/rust#15934
- added a new example.
- reexported all public APIs in the crate root.
- made all constructors fail on the invalid arguments by default;
`*_opt()` variants have been added for the original behavior.
- same for `DateZ::{succ,pred}`.
- fixed a missing overflow check from `TimeZ::from_hms_{milli,micro}`.