時間間隔をちょっと考えて
時間間隔をちょっと考えて
class DateInterval { constructor (begin, end) { this.begin = begin; this.end = end; } isInRange (date = new Date) { let b = +this.begin, e = +this.end, d = +date; return b <= d ? d <= e: false; } copy () { return new DateInterval (new Date (this.begin), new Date (this.end)); } static range (...arg) { let [s, m, h, d] = [...arg.reverse (), 0, 0, 0, 0]; if (31 < d) throw new Error; return new Date (Date.UTC (1970, 0, d + 1, h, m, s, (s % 1 * 1000))); } static split (dateInterval, date) { let rst = [ ], max = +dateInterval.end, step = +date; for (let i = new Date (dateInterval.begin); i < max; i.setTime (+i +step)) rst.push (new Date (i)); return rst; } static create (a, b) { return new DateInterval (new Date (...a), new Date (...b)); } } let a = DateInterval.range (1,0,0); let b = DateInterval.create ([1,0,1], [1,0,2]); console.log (DateInterval.split (b, a));