pub trait PeriodExt {
    fn iterate<R: RangeBounds<OffsetDateTime>>(&self, range: R) -> RangeIterNotable traits for RangeIterimpl Iterator for RangeIter    type Item = OffsetDateTime;;
}
Expand description

Useful extentions for Period.

Required Methods

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

Implementors