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§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.