3 unstable releases
0.2.0 | Apr 11, 2023 |
---|---|
0.1.1 | Feb 27, 2023 |
0.1.0 | Feb 27, 2023 |
#135 in Date and time
57KB
1K
SLoC
timext
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.
- Introduces
CalendarDuration
and extendstime::Date
,time::PrimitiveDateTime
andtime::OffsetDateTime
with several methods to enable arithmetic operations related to months and years. Additionally, attaches conversion methods toi64
andf64
to improve ease of use.
use time::{Date, Month::*};
use timext::ext::NumericCalendarDuration;
fn main() {
let d0 = Date::from_calendar_date(2023, January, 31);
let d1 = Date::from_calendar_date(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());
}
- Implements its own
time::Time
,time::Date
,time::PrimitiveDateTime
, andtime::OffsetDateTime
types, that are convertable from/to original, but allow incomplete time formats e.g.xx:24:xx.845
,1998-xx-02
or2016-08 14:xx
.
Warning :
parsing
&formatting
are not yet implemented.
use time::{Date, Month::*};
use timext::{InComplete, InDate};
fn main() {
let d0 = Date::from_calendar_date(2023, January, 28);
let d1 = InDate::from_calendar_date(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());
}
Links
Dependencies
~520–690KB
~13K SLoC