pub struct Duration { /* private fields */ }chrono only.Expand description
ISO 8601 time duration with nanosecond precision.
This also allows for the negative duration; see individual methods for details.
Implementations§
Source§impl Duration
impl Duration
Sourcepub fn weeks(weeks: i64) -> Duration
pub fn weeks(weeks: i64) -> Duration
Makes a new Duration with given number of weeks.
Equivalent to Duration::seconds(weeks * 7 * 24 * 60 * 60) with overflow checks.
Panics when the duration is out of bounds.
Sourcepub fn try_weeks(weeks: i64) -> Option<Duration>
pub fn try_weeks(weeks: i64) -> Option<Duration>
Makes a new Duration with given number of weeks.
Equivalent to Duration::seconds(weeks * 7 * 24 * 60 * 60) with overflow checks.
Returns None when the duration is out of bounds.
Sourcepub fn days(days: i64) -> Duration
pub fn days(days: i64) -> Duration
Makes a new Duration with given number of days.
Equivalent to Duration::seconds(days * 24 * 60 * 60) with overflow checks.
Panics when the duration is out of bounds.
Sourcepub fn try_days(days: i64) -> Option<Duration>
pub fn try_days(days: i64) -> Option<Duration>
Makes a new Duration with given number of days.
Equivalent to Duration::seconds(days * 24 * 60 * 60) with overflow checks.
Returns None when the duration is out of bounds.
Sourcepub fn hours(hours: i64) -> Duration
pub fn hours(hours: i64) -> Duration
Makes a new Duration with given number of hours.
Equivalent to Duration::seconds(hours * 60 * 60) with overflow checks.
Panics when the duration is out of bounds.
Sourcepub fn try_hours(hours: i64) -> Option<Duration>
pub fn try_hours(hours: i64) -> Option<Duration>
Makes a new Duration with given number of hours.
Equivalent to Duration::seconds(hours * 60 * 60) with overflow checks.
Returns None when the duration is out of bounds.
Sourcepub fn minutes(minutes: i64) -> Duration
pub fn minutes(minutes: i64) -> Duration
Makes a new Duration with given number of minutes.
Equivalent to Duration::seconds(minutes * 60) with overflow checks.
Panics when the duration is out of bounds.
Sourcepub fn try_minutes(minutes: i64) -> Option<Duration>
pub fn try_minutes(minutes: i64) -> Option<Duration>
Makes a new Duration with given number of minutes.
Equivalent to Duration::seconds(minutes * 60) with overflow checks.
Returns None when the duration is out of bounds.
Sourcepub fn seconds(seconds: i64) -> Duration
pub fn seconds(seconds: i64) -> Duration
Makes a new Duration with given number of seconds.
Panics when the duration is more than i64::MAX milliseconds
or less than -i64::MAX milliseconds.
Sourcepub fn try_seconds(seconds: i64) -> Option<Duration>
pub fn try_seconds(seconds: i64) -> Option<Duration>
Makes a new Duration with given number of seconds.
Returns None when the duration is more than i64::MAX milliseconds
or less than -i64::MAX milliseconds.
Sourcepub const fn milliseconds(milliseconds: i64) -> Duration
pub const fn milliseconds(milliseconds: i64) -> Duration
Makes a new Duration with given number of milliseconds.
Sourcepub const fn microseconds(microseconds: i64) -> Duration
pub const fn microseconds(microseconds: i64) -> Duration
Makes a new Duration with given number of microseconds.
Sourcepub const fn nanoseconds(nanos: i64) -> Duration
pub const fn nanoseconds(nanos: i64) -> Duration
Makes a new Duration with given number of nanoseconds.
Sourcepub const fn num_minutes(&self) -> i64
pub const fn num_minutes(&self) -> i64
Returns the total number of whole minutes in the duration.
Sourcepub const fn num_seconds(&self) -> i64
pub const fn num_seconds(&self) -> i64
Returns the total number of whole seconds in the duration.
Sourcepub const fn subsec_nanos(&self) -> i32
pub const fn subsec_nanos(&self) -> i32
Returns the number of nanoseconds such that
subsec_nanos() + num_seconds() * NANOS_PER_SEC is the total number of
nanoseconds in the duration.
Sourcepub const fn num_milliseconds(&self) -> i64
pub const fn num_milliseconds(&self) -> i64
Returns the total number of whole milliseconds in the duration,
Sourcepub const fn num_microseconds(&self) -> Option<i64>
pub const fn num_microseconds(&self) -> Option<i64>
Returns the total number of whole microseconds in the duration,
or None on overflow (exceeding 2^63 microseconds in either direction).
Sourcepub const fn num_nanoseconds(&self) -> Option<i64>
pub const fn num_nanoseconds(&self) -> Option<i64>
Returns the total number of whole nanoseconds in the duration,
or None on overflow (exceeding 2^63 nanoseconds in either direction).
Sourcepub fn checked_add(&self, rhs: &Duration) -> Option<Duration>
pub fn checked_add(&self, rhs: &Duration) -> Option<Duration>
Add two durations, returning None if overflow occurred.
Sourcepub fn checked_sub(&self, rhs: &Duration) -> Option<Duration>
pub fn checked_sub(&self, rhs: &Duration) -> Option<Duration>
Subtract two durations, returning None if overflow occurred.
Sourcepub const fn zero() -> Duration
pub const fn zero() -> Duration
A duration where the stored seconds and nanoseconds are equal to zero.
Sourcepub fn from_std(duration: Duration) -> Result<Duration, OutOfRangeError>
pub fn from_std(duration: Duration) -> Result<Duration, OutOfRangeError>
Creates a time::Duration object from std::time::Duration
This function errors when original duration is larger than the maximum value supported for this type.
Sourcepub fn to_std(&self) -> Result<Duration, OutOfRangeError>
pub fn to_std(&self) -> Result<Duration, OutOfRangeError>
Creates a std::time::Duration object from time::Duration
This function errors when duration is less than zero. As standard library implementation is limited to non-negative values.
Trait Implementations§
Source§impl<Tz> Add<Duration> for DateTime<Tz>where
Tz: TimeZone,
Add chrono::Duration to DateTime.
impl<Tz> Add<Duration> for DateTime<Tz>where
Tz: TimeZone,
Add chrono::Duration to DateTime.
As a part of Chrono’s [leap second handling], the addition assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_add_signed to get an Option instead.
Source§impl Add<Duration> for NaiveDate
Add chrono::Duration to NaiveDate.
impl Add<Duration> for NaiveDate
Add chrono::Duration to NaiveDate.
This discards the fractional days in Duration, rounding to the closest integral number of days
towards Duration::zero().
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_add_signed to get an Option instead.
§Example
use chrono::{Duration, NaiveDate};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
assert_eq!(from_ymd(2014, 1, 1) + Duration::zero(), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Duration::seconds(86399), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Duration::seconds(-86399), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Duration::days(1), from_ymd(2014, 1, 2));
assert_eq!(from_ymd(2014, 1, 1) + Duration::days(-1), from_ymd(2013, 12, 31));
assert_eq!(from_ymd(2014, 1, 1) + Duration::days(364), from_ymd(2014, 12, 31));
assert_eq!(from_ymd(2014, 1, 1) + Duration::days(365*4 + 1), from_ymd(2018, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Duration::days(365*400 + 97), from_ymd(2414, 1, 1));Source§impl Add<Duration> for NaiveDateTime
Add chrono::Duration to NaiveDateTime.
impl Add<Duration> for NaiveDateTime
Add chrono::Duration to NaiveDateTime.
As a part of Chrono’s leap second handling, the addition assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_add_signed to get an Option instead.
§Example
use chrono::{Duration, NaiveDate};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
let d = from_ymd(2016, 7, 8);
let hms = |h, m, s| d.and_hms_opt(h, m, s).unwrap();
assert_eq!(hms(3, 5, 7) + Duration::zero(), hms(3, 5, 7));
assert_eq!(hms(3, 5, 7) + Duration::seconds(1), hms(3, 5, 8));
assert_eq!(hms(3, 5, 7) + Duration::seconds(-1), hms(3, 5, 6));
assert_eq!(hms(3, 5, 7) + Duration::seconds(3600 + 60), hms(4, 6, 7));
assert_eq!(hms(3, 5, 7) + Duration::seconds(86_400),
from_ymd(2016, 7, 9).and_hms_opt(3, 5, 7).unwrap());
assert_eq!(hms(3, 5, 7) + Duration::days(365),
from_ymd(2017, 7, 8).and_hms_opt(3, 5, 7).unwrap());
let hmsm = |h, m, s, milli| d.and_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(hmsm(3, 5, 7, 980) + Duration::milliseconds(450), hmsm(3, 5, 8, 430));Leap seconds are handled, but the addition assumes that it is the only leap second happened.
let leap = hmsm(3, 5, 59, 1_300);
assert_eq!(leap + Duration::zero(), hmsm(3, 5, 59, 1_300));
assert_eq!(leap + Duration::milliseconds(-500), hmsm(3, 5, 59, 800));
assert_eq!(leap + Duration::milliseconds(500), hmsm(3, 5, 59, 1_800));
assert_eq!(leap + Duration::milliseconds(800), hmsm(3, 6, 0, 100));
assert_eq!(leap + Duration::seconds(10), hmsm(3, 6, 9, 300));
assert_eq!(leap + Duration::seconds(-10), hmsm(3, 5, 50, 300));
assert_eq!(leap + Duration::days(1),
from_ymd(2016, 7, 9).and_hms_milli_opt(3, 5, 59, 300).unwrap());Source§type Output = NaiveDateTime
type Output = NaiveDateTime
+ operator.Source§impl Add<Duration> for NaiveTime
Add chrono::Duration to NaiveTime.
impl Add<Duration> for NaiveTime
Add chrono::Duration to NaiveTime.
This wraps around and never overflows or underflows. In particular the addition ignores integral number of days.
As a part of Chrono’s leap second handling, the addition assumes that there is no leap
second ever, except when the NaiveTime itself represents a leap second in which case the
assumption becomes that there is exactly a single leap second ever.
§Example
use chrono::{Duration, NaiveTime};
let from_hmsm = |h, m, s, milli| { NaiveTime::from_hms_milli_opt(h, m, s, milli).unwrap() };
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::zero(), from_hmsm(3, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(1), from_hmsm(3, 5, 8, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(-1), from_hmsm(3, 5, 6, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(60 + 4), from_hmsm(3, 6, 11, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(7*60*60 - 6*60), from_hmsm(9, 59, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::milliseconds(80), from_hmsm(3, 5, 7, 80));
assert_eq!(from_hmsm(3, 5, 7, 950) + Duration::milliseconds(280), from_hmsm(3, 5, 8, 230));
assert_eq!(from_hmsm(3, 5, 7, 950) + Duration::milliseconds(-980), from_hmsm(3, 5, 6, 970));The addition wraps around.
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(22*60*60), from_hmsm(1, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::seconds(-8*60*60), from_hmsm(19, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + Duration::days(800), from_hmsm(3, 5, 7, 0));Leap seconds are handled, but the addition assumes that it is the only leap second happened.
let leap = from_hmsm(3, 5, 59, 1_300);
assert_eq!(leap + Duration::zero(), from_hmsm(3, 5, 59, 1_300));
assert_eq!(leap + Duration::milliseconds(-500), from_hmsm(3, 5, 59, 800));
assert_eq!(leap + Duration::milliseconds(500), from_hmsm(3, 5, 59, 1_800));
assert_eq!(leap + Duration::milliseconds(800), from_hmsm(3, 6, 0, 100));
assert_eq!(leap + Duration::seconds(10), from_hmsm(3, 6, 9, 300));
assert_eq!(leap + Duration::seconds(-10), from_hmsm(3, 5, 50, 300));
assert_eq!(leap + Duration::days(1), from_hmsm(3, 5, 59, 300));Source§impl<Tz> AddAssign<Duration> for Date<Tz>where
Tz: TimeZone,
impl<Tz> AddAssign<Duration> for Date<Tz>where
Tz: TimeZone,
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl<Tz> AddAssign<Duration> for DateTime<Tz>where
Tz: TimeZone,
Add-assign chrono::Duration to DateTime.
impl<Tz> AddAssign<Duration> for DateTime<Tz>where
Tz: TimeZone,
Add-assign chrono::Duration to DateTime.
As a part of Chrono’s [leap second handling], the addition assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_add_signed to get an Option instead.
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl AddAssign<Duration> for NaiveDate
Add-assign of chrono::Duration to NaiveDate.
impl AddAssign<Duration> for NaiveDate
Add-assign of chrono::Duration to NaiveDate.
This discards the fractional days in Duration, rounding to the closest integral number of days
towards Duration::zero().
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_add_signed to get an Option instead.
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl AddAssign<Duration> for NaiveDateTime
Add-assign chrono::Duration to NaiveDateTime.
impl AddAssign<Duration> for NaiveDateTime
Add-assign chrono::Duration to NaiveDateTime.
As a part of Chrono’s [leap second handling], the addition assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_add_signed to get an Option instead.
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl AddAssign<Duration> for NaiveTime
Add-assign chrono::Duration to NaiveTime.
impl AddAssign<Duration> for NaiveTime
Add-assign chrono::Duration to NaiveTime.
This wraps around and never overflows or underflows. In particular the addition ignores integral number of days.
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl AddAssign for Duration
impl AddAssign for Duration
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. Read moreSource§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMicroSeconds<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMicroSeconds<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<i64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMicroSeconds<i64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMicroSecondsWithFrac<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMilliSeconds<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMilliSeconds<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<i64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMilliSeconds<i64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationMilliSecondsWithFrac<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationNanoSeconds<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationNanoSeconds<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<i64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationNanoSeconds<i64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationNanoSecondsWithFrac<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationSeconds<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationSeconds<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<i64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationSeconds<i64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<f64, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<f64, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
Available on crate feature chrono_0_4 only.
impl<'de, FORMAT> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<FORMAT, Flexible>where
FORMAT: Format,
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<String, Strict>
Available on crate feature chrono_0_4 only.
impl<'de> DeserializeAs<'de, Duration> for DurationSecondsWithFrac<String, Strict>
chrono_0_4 only.Source§fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<Duration, D::Error>where
D: Deserializer<'de>,
Source§impl Ord for Duration
impl Ord for Duration
Source§impl PartialOrd for Duration
impl PartialOrd for Duration
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMicroSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationMilliSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationNanoSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationSeconds<i64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationSecondsWithFrac<String, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<STRICTNESS> SerializeAs<Duration> for DurationSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
Available on crate feature chrono_0_4 only.
impl<STRICTNESS> SerializeAs<Duration> for DurationSecondsWithFrac<f64, STRICTNESS>where
STRICTNESS: Strictness,
chrono_0_4 only.Source§fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(source: &Duration, serializer: S) -> Result<S::Ok, S::Error>where
S: Serializer,
Source§impl<Tz> Sub<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract chrono::Duration from DateTime.
impl<Tz> Sub<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract chrono::Duration from DateTime.
This is the same as the addition with a negated Duration.
As a part of Chrono’s [leap second handling] the subtraction assumes that there is no leap
second ever, except when the DateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_sub_signed to get an Option instead.
Source§impl Sub<Duration> for NaiveDate
Subtract chrono::Duration from NaiveDate.
impl Sub<Duration> for NaiveDate
Subtract chrono::Duration from NaiveDate.
This discards the fractional days in Duration, rounding to the closest integral number of days
towards Duration::zero().
It is the same as the addition with a negated Duration.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_sub_signed to get an Option instead.
§Example
use chrono::{Duration, NaiveDate};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
assert_eq!(from_ymd(2014, 1, 1) - Duration::zero(), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Duration::seconds(86399), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Duration::seconds(-86399), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Duration::days(1), from_ymd(2013, 12, 31));
assert_eq!(from_ymd(2014, 1, 1) - Duration::days(-1), from_ymd(2014, 1, 2));
assert_eq!(from_ymd(2014, 1, 1) - Duration::days(364), from_ymd(2013, 1, 2));
assert_eq!(from_ymd(2014, 1, 1) - Duration::days(365*4 + 1), from_ymd(2010, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) - Duration::days(365*400 + 97), from_ymd(1614, 1, 1));Source§impl Sub<Duration> for NaiveDateTime
Subtract chrono::Duration from NaiveDateTime.
impl Sub<Duration> for NaiveDateTime
Subtract chrono::Duration from NaiveDateTime.
This is the same as the addition with a negated Duration.
As a part of Chrono’s leap second handling the subtraction assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_sub_signed to get an Option instead.
§Example
use chrono::{Duration, NaiveDate};
let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();
let d = from_ymd(2016, 7, 8);
let hms = |h, m, s| d.and_hms_opt(h, m, s).unwrap();
assert_eq!(hms(3, 5, 7) - Duration::zero(), hms(3, 5, 7));
assert_eq!(hms(3, 5, 7) - Duration::seconds(1), hms(3, 5, 6));
assert_eq!(hms(3, 5, 7) - Duration::seconds(-1), hms(3, 5, 8));
assert_eq!(hms(3, 5, 7) - Duration::seconds(3600 + 60), hms(2, 4, 7));
assert_eq!(hms(3, 5, 7) - Duration::seconds(86_400),
from_ymd(2016, 7, 7).and_hms_opt(3, 5, 7).unwrap());
assert_eq!(hms(3, 5, 7) - Duration::days(365),
from_ymd(2015, 7, 9).and_hms_opt(3, 5, 7).unwrap());
let hmsm = |h, m, s, milli| d.and_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(hmsm(3, 5, 7, 450) - Duration::milliseconds(670), hmsm(3, 5, 6, 780));Leap seconds are handled, but the subtraction assumes that it is the only leap second happened.
let leap = hmsm(3, 5, 59, 1_300);
assert_eq!(leap - Duration::zero(), hmsm(3, 5, 59, 1_300));
assert_eq!(leap - Duration::milliseconds(200), hmsm(3, 5, 59, 1_100));
assert_eq!(leap - Duration::milliseconds(500), hmsm(3, 5, 59, 800));
assert_eq!(leap - Duration::seconds(60), hmsm(3, 5, 0, 300));
assert_eq!(leap - Duration::days(1),
from_ymd(2016, 7, 7).and_hms_milli_opt(3, 6, 0, 300).unwrap());Source§type Output = NaiveDateTime
type Output = NaiveDateTime
- operator.Source§impl Sub<Duration> for NaiveTime
Subtract chrono::Duration from NaiveTime.
impl Sub<Duration> for NaiveTime
Subtract chrono::Duration from NaiveTime.
This wraps around and never overflows or underflows.
In particular the subtraction ignores integral number of days.
This is the same as addition with a negated Duration.
As a part of Chrono’s leap second handling, the subtraction assumes that there is no leap
second ever, except when the NaiveTime itself represents a leap second in which case the
assumption becomes that there is exactly a single leap second ever.
§Example
use chrono::{Duration, NaiveTime};
let from_hmsm = |h, m, s, milli| { NaiveTime::from_hms_milli_opt(h, m, s, milli).unwrap() };
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::zero(), from_hmsm(3, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(1), from_hmsm(3, 5, 6, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(60 + 5), from_hmsm(3, 4, 2, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(2*60*60 + 6*60), from_hmsm(0, 59, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::milliseconds(80), from_hmsm(3, 5, 6, 920));
assert_eq!(from_hmsm(3, 5, 7, 950) - Duration::milliseconds(280), from_hmsm(3, 5, 7, 670));The subtraction wraps around.
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::seconds(8*60*60), from_hmsm(19, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) - Duration::days(800), from_hmsm(3, 5, 7, 0));Leap seconds are handled, but the subtraction assumes that it is the only leap second happened.
let leap = from_hmsm(3, 5, 59, 1_300);
assert_eq!(leap - Duration::zero(), from_hmsm(3, 5, 59, 1_300));
assert_eq!(leap - Duration::milliseconds(200), from_hmsm(3, 5, 59, 1_100));
assert_eq!(leap - Duration::milliseconds(500), from_hmsm(3, 5, 59, 800));
assert_eq!(leap - Duration::seconds(60), from_hmsm(3, 5, 0, 300));
assert_eq!(leap - Duration::days(1), from_hmsm(3, 6, 0, 300));Source§impl<Tz> SubAssign<Duration> for Date<Tz>where
Tz: TimeZone,
impl<Tz> SubAssign<Duration> for Date<Tz>where
Tz: TimeZone,
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSource§impl<Tz> SubAssign<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract-assign chrono::Duration from DateTime.
impl<Tz> SubAssign<Duration> for DateTime<Tz>where
Tz: TimeZone,
Subtract-assign chrono::Duration from DateTime.
This is the same as the addition with a negated Duration.
As a part of Chrono’s [leap second handling], the addition assumes that there is no leap
second ever, except when the DateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using DateTime<Tz>::checked_sub_signed to get an Option instead.
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSource§impl SubAssign<Duration> for NaiveDate
Subtract-assign chrono::Duration from NaiveDate.
impl SubAssign<Duration> for NaiveDate
Subtract-assign chrono::Duration from NaiveDate.
This discards the fractional days in Duration, rounding to the closest integral number of days
towards Duration::zero().
It is the same as the addition with a negated Duration.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDate::checked_sub_signed to get an Option instead.
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSource§impl SubAssign<Duration> for NaiveDateTime
Subtract-assign chrono::Duration from NaiveDateTime.
impl SubAssign<Duration> for NaiveDateTime
Subtract-assign chrono::Duration from NaiveDateTime.
This is the same as the addition with a negated Duration.
As a part of Chrono’s [leap second handling], the addition assumes that there is no leap
second ever, except when the NaiveDateTime itself represents a leap second in which case
the assumption becomes that there is exactly a single leap second ever.
§Panics
Panics if the resulting date would be out of range.
Consider using NaiveDateTime::checked_sub_signed to get an Option instead.
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSource§impl SubAssign<Duration> for NaiveTime
Subtract-assign chrono::Duration from NaiveTime.
impl SubAssign<Duration> for NaiveTime
Subtract-assign chrono::Duration from NaiveTime.
This wraps around and never overflows or underflows. In particular the subtraction ignores integral number of days.
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreSource§impl SubAssign for Duration
impl SubAssign for Duration
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. Read moreimpl Copy for Duration
impl Eq for Duration
impl StructuralPartialEq for Duration
Auto Trait Implementations§
impl Freeze for Duration
impl RefUnwindSafe for Duration
impl Send for Duration
impl Sync for Duration
impl Unpin for Duration
impl UnwindSafe for Duration
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.