73 lines
2.1 KiB
Plaintext
73 lines
2.1 KiB
Plaintext
import addDays from "./addDays.mjs";
|
|
import addHours from "./addHours.mjs";
|
|
import addMilliseconds from "./addMilliseconds.mjs";
|
|
import addMinutes from "./addMinutes.mjs";
|
|
import addMonths from "./addMonths.mjs";
|
|
import addSeconds from "./addSeconds.mjs";
|
|
import addYears from "./addYears.mjs";
|
|
import units from "./units.mjs";
|
|
import { n as normalizeUnit } from "./normalizeUnit-bp5SODxw.mjs";
|
|
import daysInMonth from "./daysInMonth.mjs";
|
|
import { c as MS_IN_SECOND, b as MS_IN_MINUTE, a as MS_IN_HOUR } from "./constants-BuFquuHl.mjs";
|
|
const { DAY: DAY$1, HOUR: HOUR$1, MINUTE: MINUTE$1, MONTH: MONTH$1, SECOND: SECOND$1, YEAR: YEAR$1 } = units;
|
|
function addNumber(date, num, unit) {
|
|
unit = normalizeUnit(unit);
|
|
switch (unit) {
|
|
case YEAR$1:
|
|
return addYears(date, num);
|
|
case MONTH$1:
|
|
return addMonths(date, num);
|
|
case DAY$1:
|
|
return addDays(date, num);
|
|
case HOUR$1:
|
|
return addHours(date, num);
|
|
case MINUTE$1:
|
|
return addMinutes(date, num);
|
|
case SECOND$1:
|
|
return addSeconds(date, num);
|
|
default:
|
|
return addMilliseconds(date, num);
|
|
}
|
|
}
|
|
const { DAY, HOUR, MINUTE, MONTH, SECOND, YEAR } = units;
|
|
function addObject(date, obj, times) {
|
|
let time = 0;
|
|
let expectedMonth = 0;
|
|
let expectedDay = 0;
|
|
Object.entries(obj).forEach(([unit, num]) => {
|
|
unit = normalizeUnit(unit);
|
|
num *= times;
|
|
switch (unit) {
|
|
case YEAR:
|
|
expectedMonth += num * 12;
|
|
return;
|
|
case MONTH:
|
|
expectedMonth += date.getMonth() + num;
|
|
return;
|
|
case DAY:
|
|
expectedDay = num;
|
|
return;
|
|
case HOUR:
|
|
num *= MS_IN_HOUR;
|
|
break;
|
|
case MINUTE:
|
|
num *= MS_IN_MINUTE;
|
|
break;
|
|
case SECOND:
|
|
num *= MS_IN_SECOND;
|
|
break;
|
|
}
|
|
time += num;
|
|
});
|
|
if (expectedMonth) {
|
|
const tempMaxDay = daysInMonth(new Date(date.getFullYear(), expectedMonth, 1, 0, 0, 0, 0));
|
|
const currentDay = date.getDate();
|
|
date.setMonth(expectedMonth, (currentDay > tempMaxDay ? tempMaxDay : currentDay) + expectedDay);
|
|
}
|
|
return addMilliseconds(date, time);
|
|
}
|
|
export {
|
|
addObject as a,
|
|
addNumber as b
|
|
};
|