Files
SnowLuma/.pnpm-store/v11/files/bd/b860cf63e736fefdf794835e4b8d3ec4b32efcd27644ee27ab126889b8034a607b4f28f2b6d70dfc5e3394bbe4b9a64d9c4b040361ce3ba69b2c1997398288
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

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
};