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§

source

type Err: Error

Error that can occur in rounding or truncating

Required Methods§

source

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"
);
source

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"
);

Object Safety§

This trait is not object safe.

Implementors§