Struct timext::CalendarDuration
source · pub struct CalendarDuration { /* private fields */ }Expand description
TODO Represent fraction of week with opt f32 see https://github.com/xwde/timext/issues/6
let d0 = Date::from_calendar_date(2023, Month::January, 31).unwrap();
let d1 = Date::from_calendar_date(2023, Month::February, 28).unwrap();
assert_eq!(d0 + 1.months(), d1);
let d0 = Date::from_calendar_date(2024, Month::February, 29).unwrap();
let d1 = Date::from_calendar_date(2025, Month::February, 28).unwrap();///
assert_eq!(d0 + 1.years(), d1);Implementations§
source§impl CalendarDuration
impl CalendarDuration
sourcepub const fn new(years: i32, months: i32) -> Self
pub const fn new(years: i32, months: i32) -> Self
Creates a new CalendarDuration with provided years and months.
let d0 = CalendarDuration::new(2, 24);
assert_eq!(d0.whole_years(), 4);
assert_eq!(d0.whole_months(), 48);sourcepub const fn years(years: i32) -> Self
pub const fn years(years: i32) -> Self
Creates a new CalendarDuration with provided years.
let d0 = CalendarDuration::years(2);
assert_eq!(d0.whole_years(), 2);
assert_eq!(d0.whole_months(), 24);sourcepub const fn months(months: i32) -> Self
pub const fn months(months: i32) -> Self
Creates a new CalendarDuration with provided months.
let d0 = CalendarDuration::months(24);
assert_eq!(d0.whole_years(), 2);
assert_eq!(d0.whole_months(), 24);pub const MIN: Self = _
pub const MAX: Self = _
source§impl CalendarDuration
impl CalendarDuration
sourcepub const fn whole_years(self) -> i32
pub const fn whole_years(self) -> i32
Returns the number of whole years in the CalendarDuration.
assert_eq!(1.years().whole_years(), 1);
assert_eq!((-1).years().whole_years(), -1);
assert_eq!(6.months().whole_years(), 0);
assert_eq!((-6).months().whole_years(), 0);sourcepub const fn whole_months(self) -> i32
pub const fn whole_months(self) -> i32
Returns the number of whole months in the CalendarDuration.
assert_eq!(1.months().whole_months(), 1);
assert_eq!((-1).months().whole_months(), -1);
assert_eq!(6.months().whole_years(), 0);
assert_eq!((-6).months().whole_years(), 0);sourcepub const fn subyear_months(self) -> i32
pub const fn subyear_months(self) -> i32
Returns the number of months past the number of whole years.
assert_eq!(13.months().subyear_months(), 1);
assert_eq!((-13).months().subyear_months(), -1);sourcepub const fn is_zero(self) -> bool
pub const fn is_zero(self) -> bool
Checks if a duration is negative.
assert!(0.months().is_zero());
assert!(!1.months().is_zero());sourcepub const fn is_positive(self) -> bool
pub const fn is_positive(self) -> bool
Checks if a CalendarDuration is positive.
assert!(1.months().is_positive());
assert!(!0.months().is_positive());
assert!(!(-1).months().is_positive());sourcepub const fn is_negative(self) -> bool
pub const fn is_negative(self) -> bool
Checks if a CalendarDuration is negative.
assert!((-1).months().is_negative());
assert!(!0.months().is_negative());
assert!(!1.months().is_negative());source§impl CalendarDuration
impl CalendarDuration
sourcepub fn checked_date_add(date: Date, duration: Self) -> Option<Date>
pub fn checked_date_add(date: Date, duration: Self) -> Option<Date>
Returns the sum of provided Date and CalendarDuration.
let d0 = Date::from_calendar_date(2018, September, 1).unwrap();
let d1 = Date::from_calendar_date(2018, October, 1).unwrap();
let rs = CalendarDuration::checked_date_add(d0, 1.months());
assert_eq!(rs.unwrap(), d1);sourcepub fn checked_date_sub(date: Date, duration: Self) -> Option<Date>
pub fn checked_date_sub(date: Date, duration: Self) -> Option<Date>
Returns the difference of provided Date and CalendarDuration.
let d0 = Date::from_calendar_date(2018, September, 1).unwrap();
let d1 = Date::from_calendar_date(2018, August, 1).unwrap();
let rs = CalendarDuration::checked_date_sub(d0, 1.months());
assert_eq!(rs.unwrap(), d1);source§impl CalendarDuration
impl CalendarDuration
sourcepub fn checked_add(self, rhs: Self) -> Option<Self>
pub fn checked_add(self, rhs: Self) -> Option<Self>
Computes self + rhs, returning None if an overflow occurred.
assert_eq!(5.months().checked_add(5.months()), Some(10.months()));
assert_eq!(CalendarDuration::MAX.checked_add(1.months()), None);
assert_eq!((-5).months().checked_add(5.months()), Some(0.months()));sourcepub fn checked_sub(self, rhs: Self) -> Option<Self>
pub fn checked_sub(self, rhs: Self) -> Option<Self>
Computes self - rhs, returning None if an overflow occurred.
assert_eq!(5.months().checked_sub(5.months()), Some(0.months()));
assert_eq!(CalendarDuration::MIN.checked_sub(1.months()), None);
assert_eq!(5.months().checked_sub(5.months()), Some(0.months()));sourcepub fn checked_mul(self, rhs: i32) -> Option<Self>
pub fn checked_mul(self, rhs: i32) -> Option<Self>
Computes self * rhs, returning None if an overflow occurred.
assert_eq!(5.months().checked_mul(2), Some(10.months()));
assert_eq!(5.months().checked_mul(-2), Some((-10).months()));
assert_eq!(5.months().checked_mul(0), Some(0.months()));
assert_eq!(CalendarDuration::MAX.checked_mul(2), None);
assert_eq!(CalendarDuration::MIN.checked_mul(2), None);sourcepub fn checked_div(self, rhs: i32) -> Option<Self>
pub fn checked_div(self, rhs: i32) -> Option<Self>
Computes self / rhs, returning None if rhs == 0 or if the result would overflow.
assert_eq!(10.months().checked_div(2), Some(5.months()));
assert_eq!(10.months().checked_div(-2), Some((-5).months()));
assert_eq!(1.months().checked_div(0), None);sourcepub fn checked_neg(self) -> Option<Self>
pub fn checked_neg(self) -> Option<Self>
Computes -self, returning None if an overflow occurred.
assert_eq!(10.months().checked_neg(), Some((-10).months()));
assert_eq!(CalendarDuration::MIN.checked_neg(), None);Trait Implementations§
source§impl Add<CalendarDuration> for CalendarDuration
impl Add<CalendarDuration> for CalendarDuration
source§impl Add<CalendarDuration> for Date
impl Add<CalendarDuration> for Date
source§impl Add<CalendarDuration> for PrimitiveDateTime
impl Add<CalendarDuration> for PrimitiveDateTime
§type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
+ operator.source§impl AddAssign<CalendarDuration> for CalendarDuration
impl AddAssign<CalendarDuration> for CalendarDuration
source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+= operation. Read moresource§impl AddAssign<CalendarDuration> for Date
impl AddAssign<CalendarDuration> for Date
source§fn add_assign(&mut self, rhs: CalendarDuration)
fn add_assign(&mut self, rhs: CalendarDuration)
+= operation. Read moresource§impl AddAssign<CalendarDuration> for PrimitiveDateTime
impl AddAssign<CalendarDuration> for PrimitiveDateTime
source§fn add_assign(&mut self, rhs: CalendarDuration)
fn add_assign(&mut self, rhs: CalendarDuration)
+= operation. Read moresource§impl Clone for CalendarDuration
impl Clone for CalendarDuration
source§fn clone(&self) -> CalendarDuration
fn clone(&self) -> CalendarDuration
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for CalendarDuration
impl Debug for CalendarDuration
source§impl Default for CalendarDuration
impl Default for CalendarDuration
source§fn default() -> CalendarDuration
fn default() -> CalendarDuration
source§impl Display for CalendarDuration
impl Display for CalendarDuration
source§impl Div<i16> for CalendarDuration
impl Div<i16> for CalendarDuration
source§impl Div<i32> for CalendarDuration
impl Div<i32> for CalendarDuration
source§impl Div<i8> for CalendarDuration
impl Div<i8> for CalendarDuration
source§impl Div<u16> for CalendarDuration
impl Div<u16> for CalendarDuration
source§impl Div<u32> for CalendarDuration
impl Div<u32> for CalendarDuration
source§impl Div<u8> for CalendarDuration
impl Div<u8> for CalendarDuration
source§impl DivAssign<i16> for CalendarDuration
impl DivAssign<i16> for CalendarDuration
source§fn div_assign(&mut self, rhs: i16)
fn div_assign(&mut self, rhs: i16)
/= operation. Read moresource§impl DivAssign<i32> for CalendarDuration
impl DivAssign<i32> for CalendarDuration
source§fn div_assign(&mut self, rhs: i32)
fn div_assign(&mut self, rhs: i32)
/= operation. Read moresource§impl DivAssign<i8> for CalendarDuration
impl DivAssign<i8> for CalendarDuration
source§fn div_assign(&mut self, rhs: i8)
fn div_assign(&mut self, rhs: i8)
/= operation. Read moresource§impl DivAssign<u16> for CalendarDuration
impl DivAssign<u16> for CalendarDuration
source§fn div_assign(&mut self, rhs: u16)
fn div_assign(&mut self, rhs: u16)
/= operation. Read moresource§impl DivAssign<u32> for CalendarDuration
impl DivAssign<u32> for CalendarDuration
source§fn div_assign(&mut self, rhs: u32)
fn div_assign(&mut self, rhs: u32)
/= operation. Read moresource§impl DivAssign<u8> for CalendarDuration
impl DivAssign<u8> for CalendarDuration
source§fn div_assign(&mut self, rhs: u8)
fn div_assign(&mut self, rhs: u8)
/= operation. Read moresource§impl Hash for CalendarDuration
impl Hash for CalendarDuration
source§impl Mul<CalendarDuration> for i16
impl Mul<CalendarDuration> for i16
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<CalendarDuration> for i32
impl Mul<CalendarDuration> for i32
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<CalendarDuration> for i8
impl Mul<CalendarDuration> for i8
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<CalendarDuration> for u16
impl Mul<CalendarDuration> for u16
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<CalendarDuration> for u32
impl Mul<CalendarDuration> for u32
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<CalendarDuration> for u8
impl Mul<CalendarDuration> for u8
§type Output = CalendarDuration
type Output = CalendarDuration
* operator.source§impl Mul<i16> for CalendarDuration
impl Mul<i16> for CalendarDuration
source§impl Mul<i32> for CalendarDuration
impl Mul<i32> for CalendarDuration
source§impl Mul<i8> for CalendarDuration
impl Mul<i8> for CalendarDuration
source§impl Mul<u16> for CalendarDuration
impl Mul<u16> for CalendarDuration
source§impl Mul<u32> for CalendarDuration
impl Mul<u32> for CalendarDuration
source§impl Mul<u8> for CalendarDuration
impl Mul<u8> for CalendarDuration
source§impl MulAssign<i16> for CalendarDuration
impl MulAssign<i16> for CalendarDuration
source§fn mul_assign(&mut self, rhs: i16)
fn mul_assign(&mut self, rhs: i16)
*= operation. Read moresource§impl MulAssign<i32> for CalendarDuration
impl MulAssign<i32> for CalendarDuration
source§fn mul_assign(&mut self, rhs: i32)
fn mul_assign(&mut self, rhs: i32)
*= operation. Read moresource§impl MulAssign<i8> for CalendarDuration
impl MulAssign<i8> for CalendarDuration
source§fn mul_assign(&mut self, rhs: i8)
fn mul_assign(&mut self, rhs: i8)
*= operation. Read moresource§impl MulAssign<u16> for CalendarDuration
impl MulAssign<u16> for CalendarDuration
source§fn mul_assign(&mut self, rhs: u16)
fn mul_assign(&mut self, rhs: u16)
*= operation. Read moresource§impl MulAssign<u32> for CalendarDuration
impl MulAssign<u32> for CalendarDuration
source§fn mul_assign(&mut self, rhs: u32)
fn mul_assign(&mut self, rhs: u32)
*= operation. Read moresource§impl MulAssign<u8> for CalendarDuration
impl MulAssign<u8> for CalendarDuration
source§fn mul_assign(&mut self, rhs: u8)
fn mul_assign(&mut self, rhs: u8)
*= operation. Read moresource§impl Neg for CalendarDuration
impl Neg for CalendarDuration
source§impl Ord for CalendarDuration
impl Ord for CalendarDuration
source§fn cmp(&self, other: &CalendarDuration) -> Ordering
fn cmp(&self, other: &CalendarDuration) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<CalendarDuration> for CalendarDuration
impl PartialEq<CalendarDuration> for CalendarDuration
source§fn eq(&self, other: &CalendarDuration) -> bool
fn eq(&self, other: &CalendarDuration) -> bool
self and other values to be equal, and is used
by ==.source§impl PartialOrd<CalendarDuration> for CalendarDuration
impl PartialOrd<CalendarDuration> for CalendarDuration
source§fn partial_cmp(&self, other: &CalendarDuration) -> Option<Ordering>
fn partial_cmp(&self, other: &CalendarDuration) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read moresource§impl Sub<CalendarDuration> for CalendarDuration
impl Sub<CalendarDuration> for CalendarDuration
source§impl Sub<CalendarDuration> for Date
impl Sub<CalendarDuration> for Date
source§impl Sub<CalendarDuration> for PrimitiveDateTime
impl Sub<CalendarDuration> for PrimitiveDateTime
§type Output = PrimitiveDateTime
type Output = PrimitiveDateTime
- operator.source§impl SubAssign<CalendarDuration> for CalendarDuration
impl SubAssign<CalendarDuration> for CalendarDuration
source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-= operation. Read moresource§impl SubAssign<CalendarDuration> for Date
impl SubAssign<CalendarDuration> for Date
source§fn sub_assign(&mut self, rhs: CalendarDuration)
fn sub_assign(&mut self, rhs: CalendarDuration)
-= operation. Read moresource§impl SubAssign<CalendarDuration> for PrimitiveDateTime
impl SubAssign<CalendarDuration> for PrimitiveDateTime
source§fn sub_assign(&mut self, rhs: CalendarDuration)
fn sub_assign(&mut self, rhs: CalendarDuration)
-= operation. Read more