pub struct Months(/* private fields */);
Expand description
A duration in calendar months
Implementations§
Trait Implementations§
source§impl Add<Months> for NaiveDate
impl Add<Months> for NaiveDate
source§fn add(self, months: Months) -> Self::Output
fn add(self, months: Months) -> Self::Output
An addition of months to NaiveDate
clamped to valid days in resulting month.
Panics
Panics if the resulting date would be out of range.
Example
use chrono::{Duration, NaiveDate, Months};
let from_ymd = NaiveDate::from_ymd;
assert_eq!(from_ymd(2014, 1, 1) + Months::new(1), from_ymd(2014, 2, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(11), from_ymd(2014, 12, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(12), from_ymd(2015, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(13), from_ymd(2015, 2, 1));
assert_eq!(from_ymd(2014, 1, 31) + Months::new(1), from_ymd(2014, 2, 28));
assert_eq!(from_ymd(2020, 1, 31) + Months::new(1), from_ymd(2020, 2, 29));
source§impl Add<Months> for NaiveDateTime
impl Add<Months> for NaiveDateTime
source§fn add(self, rhs: Months) -> Self::Output
fn add(self, rhs: Months) -> Self::Output
An addition of months to NaiveDateTime
clamped to valid days in resulting month.
Panics
Panics if the resulting date would be out of range.
Example
use chrono::{Duration, NaiveDateTime, Months, NaiveDate};
use std::str::FromStr;
assert_eq!(
NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap() + Months::new(1),
NaiveDate::from_ymd_opt(2014, 2, 1).unwrap().and_hms_opt(1, 0, 0).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 2, 0).unwrap() + Months::new(11),
NaiveDate::from_ymd_opt(2014, 12, 1).unwrap().and_hms_opt(0, 2, 0).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap() + Months::new(12),
NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 4).unwrap() + Months::new(13),
NaiveDate::from_ymd_opt(2015, 2, 1).unwrap().and_hms_opt(0, 0, 4).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 1, 31).unwrap().and_hms_opt(0, 5, 0).unwrap() + Months::new(1),
NaiveDate::from_ymd_opt(2014, 2, 28).unwrap().and_hms_opt(0, 5, 0).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2020, 1, 31).unwrap().and_hms_opt(6, 0, 0).unwrap() + Months::new(1),
NaiveDate::from_ymd_opt(2020, 2, 29).unwrap().and_hms_opt(6, 0, 0).unwrap()
);
§type Output = NaiveDateTime
type Output = NaiveDateTime
The resulting type after applying the
+
operator.source§impl PartialEq<Months> for Months
impl PartialEq<Months> for Months
source§impl PartialOrd<Months> for Months
impl PartialOrd<Months> for Months
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moresource§impl Sub<Months> for NaiveDate
impl Sub<Months> for NaiveDate
source§fn sub(self, months: Months) -> Self::Output
fn sub(self, months: Months) -> Self::Output
A subtraction of Months from NaiveDate
clamped to valid days in resulting month.
Panics
Panics if the resulting date would be out of range.
Example
use chrono::{Duration, NaiveDate, Months};
let from_ymd = NaiveDate::from_ymd;
assert_eq!(from_ymd(2014, 1, 1) - Months::new(11), from_ymd(2013, 2, 1));
assert_eq!(from_ymd(2014, 1, 1) - Months::new(12), from_ymd(2013, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Months::new(13), from_ymd(2012, 12, 1));
source§impl Sub<Months> for NaiveDateTime
impl Sub<Months> for NaiveDateTime
A subtraction of Months from NaiveDateTime
clamped to valid days in resulting month.
Panics
Panics if the resulting date would be out of range.
Example
use chrono::{Duration, NaiveDateTime, Months, NaiveDate};
use std::str::FromStr;
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(01, 00, 00).unwrap() - Months::new(11),
NaiveDate::from_ymd_opt(2013, 02, 01).unwrap().and_hms_opt(01, 00, 00).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap() - Months::new(12),
NaiveDate::from_ymd_opt(2013, 01, 01).unwrap().and_hms_opt(00, 02, 00).unwrap()
);
assert_eq!(
NaiveDate::from_ymd_opt(2014, 01, 01).unwrap().and_hms_opt(00, 00, 03).unwrap() - Months::new(13),
NaiveDate::from_ymd_opt(2012, 12, 01).unwrap().and_hms_opt(00, 00, 03).unwrap()
);
impl Copy for Months
impl Eq for Months
impl StructuralEq for Months
impl StructuralPartialEq for Months
Auto Trait Implementations§
impl RefUnwindSafe for Months
impl Send for Months
impl Sync for Months
impl Unpin for Months
impl UnwindSafe for Months
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more