function date_to_unit(dt, unit) {
let d = new Date(dt);
switch (unit) {
case "hour":
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
case "day":
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
case "week":
var day = d.getDate(),
month = d.getMonth(),
year = d.getFullYear(),
weekday = d.getDay() || 7;
return new Date(year, month, day - (weekday - 1));
case "month":
d.setDate(1);
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
case "quarter":
d.setMonth(d.getMonth() - d.getMonth() % 3);
d.setDate(1);
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
default:
throw "invalid unit";
}
}