UNPKG

mout

Version:

Modular Utilities

50 lines (49 loc) 1.51 kB
"use strict"; exports.__esModule = true; var clone_1 = require("../lang/clone"); /** * get a new Date object representing start of period */ function startOf(date, period) { date = clone_1["default"](date); // intentionally removed "break" from switch since start of // month/year/etc should also reset the following periods switch (period) { case 'year': date.setMonth(0); /* falls through */ case 'month': date.setDate(1); /* falls through */ case 'week': case 'day': date.setHours(0); /* falls through */ case 'hour': date.setMinutes(0); /* falls through */ case 'minute': date.setSeconds(0); /* falls through */ case 'second': date.setMilliseconds(0); break; default: throw new Error("\"" + period + "\" is not a valid period"); } // week is the only case that should reset the weekDay and maybe even // overflow to previous month if (period === 'week') { var weekDay = date.getDay(); var baseDate = date.getDate(); if (weekDay) { if (weekDay >= baseDate) { // start of the week is on previous month date.setDate(0); } date.setDate(date.getDate() - date.getDay()); } } return date; } exports["default"] = startOf;