UNPKG

@modern-kit/utils

Version:
42 lines (39 loc) 1.47 kB
import { parseDate } from '../parseDate/index.mjs'; import '../parseDateString/index.mjs'; function getDateStartOf(date, unit) { const parsedDate = parseDate(date); const isUTC = unit.startsWith("utc"); const baseUnit = isUTC ? unit.slice(3).toLowerCase() : unit; const year = isUTC ? parsedDate.getUTCFullYear() : parsedDate.getFullYear(); const month = isUTC ? parsedDate.getUTCMonth() : parsedDate.getMonth(); const day = isUTC ? parsedDate.getUTCDate() : parsedDate.getDate(); switch (baseUnit) { case "year": if (isUTC) { return new Date(Date.UTC(year, 0, 1, 0, 0, 0, 0)); } return new Date(year, 0, 1, 0, 0, 0, 0); case "month": if (isUTC) { return new Date(Date.UTC(year, month, 1, 0, 0, 0, 0)); } return new Date(year, month, 1, 0, 0, 0, 0); case "week": { const dayOfWeek = isUTC ? parsedDate.getUTCDay() : parsedDate.getDay(); const startOfWeek = day - dayOfWeek; if (isUTC) { return new Date(Date.UTC(year, month, startOfWeek, 0, 0, 0, 0)); } return new Date(year, month, startOfWeek, 0, 0, 0, 0); } case "date": if (isUTC) { return new Date(Date.UTC(year, month, day, 0, 0, 0, 0)); } return new Date(year, month, day, 0, 0, 0, 0); default: throw new Error(`\uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uB2E8\uC704\uC785\uB2C8\uB2E4`); } } export { getDateStartOf }; //# sourceMappingURL=index.mjs.map