Date Interval Validation

node v6.17.1
version: 1.0.0
endpointsharetweet
const moment = require('moment'); const startDate = moment('2016-09-01'); const interval = [15, 15, 20]; const last = (arr) => arr[arr.length - 1]; const sum = (nums) => nums.reduce((acc, num) => acc + num, 0); function sumSoFar(nums) { return nums.reduce((sums, num) => { const prevSum = last(sums) || 0; return sums.concat(num + prevSum); }, []); } const validDates = [moment('2016-09-16'), moment('2016-10-01'), moment('2016-10-21'), moment('2016-11-05')]; function isValid(startDate, interval, date) { const days = moment(date).diff(startDate, 'days'); const sums = sumSoFar(interval); const remainingDays = days % last(sums); return remainingDays === 0 || sums.indexOf(remainingDays) >= 0; } validDates.forEach(d => console.log(isValid(startDate, interval, d)));
Loading…

no comments

    sign in to comment