UNPKG

@onesy/date

Version:

Time and date utils library

46 lines (45 loc) 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("@onesy/utils"); const OnesyDate_1 = __importDefault(require("./OnesyDate")); const endOf_1 = __importDefault(require("./endOf")); function add(value, unit, onesyDate_ = OnesyDate_1.default.onesyDate) { if (onesyDate_ && onesyDate_.valid) { const onesyDate = new OnesyDate_1.default(onesyDate_); switch (unit) { case 'millisecond': return new OnesyDate_1.default(onesyDate.value.setMilliseconds(onesyDate.millisecond + value)); case 'second': return new OnesyDate_1.default(onesyDate.value.setSeconds(onesyDate.second + value)); case 'minute': return new OnesyDate_1.default(onesyDate.value.setMinutes(onesyDate.minute + value)); case 'hour': return new OnesyDate_1.default(onesyDate.value.setHours(onesyDate.hour + value)); case 'day': return new OnesyDate_1.default(onesyDate.value.setDate(onesyDate.day + value)); case 'week': return new OnesyDate_1.default(onesyDate.value.setDate(onesyDate.day + (value * 7))); case 'month': // Get middle of month to move to // and its endOf month, // move to that months actual day or last day let day = onesyDate.day; let month = new OnesyDate_1.default(onesyDate.value.setDate(15)); month = new OnesyDate_1.default(onesyDate.value.setMonth(onesyDate.month - 1 + value)); const monthEnd = (0, endOf_1.default)(month, 'month'); day = (0, utils_1.clamp)(day, 0, monthEnd.day); month.value.setDate(day); month = new OnesyDate_1.default(month.value); return month; case 'year': return new OnesyDate_1.default(onesyDate.value.setFullYear(onesyDate.year + value)); default: break; } } } exports.default = add;