pub trait PeriodExt {
fn iterate<R: RangeBounds<OffsetDateTime>>(&self, range: R) -> RangeIterⓘNotable traits for RangeIterimpl Iterator for RangeIter type Item = OffsetDateTime;;
}Expand description
Useful extentions for Period.
Required Methods
fn iterate<R: RangeBounds<OffsetDateTime>>(&self, range: R) -> RangeIterⓘNotable traits for RangeIterimpl Iterator for RangeIter type Item = OffsetDateTime;
fn iterate<R: RangeBounds<OffsetDateTime>>(&self, range: R) -> RangeIterⓘNotable traits for RangeIterimpl Iterator for RangeIter type Item = OffsetDateTime;
Iterate ts in range, using this period as step. Note that if the range doesn’t have a start point, it will return an empty iterator.
Example 1
use indicator::Period;
use exc::util::PeriodExt;
use time::macros::{datetime, offset};
let period = Period::weeks(offset!(+8), 1);
let tss = period
.iterate(datetime!(2022-05-01 12:31:59 +08:00)..datetime!(2022-06-01 11:56:49 +08:00))
.collect::<Vec<_>>();
assert_eq!(
vec![
datetime!(2022-04-25 00:00:00 +08:00),
datetime!(2022-05-02 00:00:00 +08:00),
datetime!(2022-05-09 00:00:00 +08:00),
datetime!(2022-05-16 00:00:00 +08:00),
datetime!(2022-05-23 00:00:00 +08:00),
datetime!(2022-05-30 00:00:00 +08:00),
],
tss,
);
Example 2
use indicator::Period;
use exc::util::PeriodExt;
use time::macros::{datetime, offset};
let period = Period::weeks(offset!(+8), 1);
let tss = period
.iterate(datetime!(2022-05-01 12:31:59 +08:00)..=datetime!(2022-06-01 11:56:49 +08:00))
.collect::<Vec<_>>();
assert_eq!(
vec![
datetime!(2022-04-25 00:00:00 +08:00),
datetime!(2022-05-02 00:00:00 +08:00),
datetime!(2022-05-09 00:00:00 +08:00),
datetime!(2022-05-16 00:00:00 +08:00),
datetime!(2022-05-23 00:00:00 +08:00),
datetime!(2022-05-30 00:00:00 +08:00),
datetime!(2022-06-06 00:00:00 +08:00),
],
tss,
);
Example 3
use indicator::Period;
use exc::util::PeriodExt;
use time::macros::{datetime, offset};
let period = Period::weeks(offset!(+8), 1);
let tss = period
.iterate(datetime!(2022-04-25 00:00:00 +08:00)..=datetime!(2022-05-30 00:00:00 +08:00))
.collect::<Vec<_>>();
assert_eq!(
vec![
datetime!(2022-04-25 00:00:00 +08:00),
datetime!(2022-05-02 00:00:00 +08:00),
datetime!(2022-05-09 00:00:00 +08:00),
datetime!(2022-05-16 00:00:00 +08:00),
datetime!(2022-05-23 00:00:00 +08:00),
datetime!(2022-05-30 00:00:00 +08:00),
],
tss,
);