Trait chrono::DurationRound
source · pub trait DurationRound: Sized {
type Err: Error;
// Required methods
fn duration_round(self, duration: Duration) -> Result<Self, Self::Err>;
fn duration_trunc(self, duration: Duration) -> Result<Self, Self::Err>;
}
Expand description
Extension trait for rounding or truncating a DateTime by a Duration.
Limitations
Both rounding and truncating are done via Duration::num_nanoseconds
and
DateTime::timestamp_nanos
. This means that they will fail if either the
Duration
or the DateTime
are too big to represented as nanoseconds. They
will also fail if the Duration
is bigger than the timestamp.
Required Associated Types§
Required Methods§
sourcefn duration_round(self, duration: Duration) -> Result<Self, Self::Err>
fn duration_round(self, duration: Duration) -> Result<Self, Self::Err>
Return a copy rounded by Duration.
Example
let dt = NaiveDate::from_ymd_opt(2018, 1, 11).unwrap().and_hms_milli_opt(12, 0, 0, 154).unwrap().and_local_timezone(Utc).unwrap();
assert_eq!(
dt.duration_round(Duration::milliseconds(10)).unwrap().to_string(),
"2018-01-11 12:00:00.150 UTC"
);
assert_eq!(
dt.duration_round(Duration::days(1)).unwrap().to_string(),
"2018-01-12 00:00:00 UTC"
);
sourcefn duration_trunc(self, duration: Duration) -> Result<Self, Self::Err>
fn duration_trunc(self, duration: Duration) -> Result<Self, Self::Err>
Return a copy truncated by Duration.
Example
let dt = NaiveDate::from_ymd_opt(2018, 1, 11).unwrap().and_hms_milli_opt(12, 0, 0, 154).unwrap().and_local_timezone(Utc).unwrap();
assert_eq!(
dt.duration_trunc(Duration::milliseconds(10)).unwrap().to_string(),
"2018-01-11 12:00:00.150 UTC"
);
assert_eq!(
dt.duration_trunc(Duration::days(1)).unwrap().to_string(),
"2018-01-11 00:00:00 UTC"
);