72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
"use strict";
|
|
const addDays = require("./addDays.js");
|
|
const addHours = require("./addHours.js");
|
|
const addMilliseconds = require("./addMilliseconds.js");
|
|
const addMinutes = require("./addMinutes.js");
|
|
const addMonths = require("./addMonths.js");
|
|
const addSeconds = require("./addSeconds.js");
|
|
const addYears = require("./addYears.js");
|
|
const units = require("./units.js");
|
|
const normalizeUnit = require("./normalizeUnit-Cn0hUyBC.js");
|
|
const daysInMonth = require("./daysInMonth.js");
|
|
const constants = require("./constants-DR3SPJ7u.js");
|
|
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.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.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 *= constants.MS_IN_HOUR;
|
|
break;
|
|
case MINUTE:
|
|
num *= constants.MS_IN_MINUTE;
|
|
break;
|
|
case SECOND:
|
|
num *= constants.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);
|
|
}
|
|
exports.addNumber = addNumber;
|
|
exports.addObject = addObject;
|