Also check out other xwde
projects here.
The collection of time-rs/time extensions
for calendar arithmetics, incomplete formats handling, imprecise time, and other
things time
crate is not intended for.
CalendarDuration
and extends time::Date
,
time::PrimitiveDateTime
and time::OffsetDateTime
with several methods to
enable arithmetic operations related to months and years. Additionally,
attaches conversion methods to i64
and f64
to improve ease of use.```rust use time::{Date, Month::*}; use timext::ext::NumericCalendarDuration;
fn main() { let d0 = Date::fromcalendardate(2023, January, 31); let d1 = Date::fromcalendardate(2023, February, 28); assert_eq!(d0.unwrap() + 1.months(), d1.unwrap());
let d0 = Date::from_calendar_date(2024, February, 29);
let d1 = Date::from_calendar_date(2025, February, 28);
assert_eq!(d0.unwrap() + 1.years(), d1.unwrap());
} ```
time::Time
, time::Date
, time::PrimitiveDateTime
, and
time::OffsetDateTime
types, that are convertable from/to original, but allow
incomplete time formats e.g. xx:24:xx.845
, 1998-xx-02
or 2016-08 14:xx
.Warning :
parsing
&formatting
are not yet implemented.
```rust use time::{Date, Month::*}; use timext::{InComplete, InDate};
fn main() { let d0 = Date::fromcalendardate(2023, January, 28); let d1 = InDate::fromcalendardate(None, None, Some(28)); let d1 = d1.unwrap();
let d1 = d1.replace_year(Some(2023)).unwrap();
let d1 = d1.replace_month(Some(January)).unwrap();
assert_eq!(d0.unwrap(), d1.into_complete().unwrap());
} ```