export class DateUtilities { /** * add some days to a date, to compute intervals * @param days * @param date */ addDaysToDate(days: number, date: Date) { date = new Date(date.valueOf()); date.setDate(date.getDate() + days); return date; }; /** * * @param d1 * @param d2 * @param interval */ getDatesInRange(d1: Date, d2: Date, interval: number) { d1 = new Date(d1); d2 = new Date(d2); const dates = []; while (+d1 < +d2) { dates.push({ literal: this.formateDate(d1), date_object: d1 }); d1.setDate(d1.getDate() + interval) } return dates.slice(0); } /** * get the number of days between two dates * @param d1 * @param d2 */ dayDiff(d1: Date, d2: Date): Number { return Number(((d2.getTime()) - (d1.getTime()) / 31536000000)); } /** * format a date object to the date format used by the inputs of type date * YYYY-MM-DD * @param date */ formateDate(date) { return [ date.getFullYear(), this.getDoubleDigits(date.getMonth() + 1), this.getDoubleDigits(date.getDate()), ].join('-') } getDoubleDigits(str) { return ("00" + str).slice(-2); } }