2777. 日期范围生成器
2025年6月25日小于 1 分钟
2777. 日期范围生成器
function* dateRangeGenerator(
start: string,
end: string,
step: number
): Generator<string> {
const startTime = Date.parse(start)
const endTime = Date.parse(end)
if (isNaN(startTime) || isNaN(endTime)) {
throw new Error('Invalid start or end date')
}
if (step <= 0) {
throw new Error('Step must be greater than 0')
}
const ONE_DAY = 86400000 // 24 * 60 * 60 * 1000
const stepTime = step * ONE_DAY
for (let time = startTime; time <= endTime; time += stepTime) {
const d = new Date(time)
const y = d.getFullYear()
const m = (d.getMonth() + 1).toString().padStart(2, '0')
const day = d.getDate().toString().padStart(2, '0')
yield `${y}-${m}-${day}`
}
}
/**
* const g = dateRangeGenerator('2023-04-01', '2023-04-04', 1);
* g.next().value; // '2023-04-01'
* g.next().value; // '2023-04-02'
* g.next().value; // '2023-04-03'
* g.next().value; // '2023-04-04'
* g.next().done; // true
*/