@onesy/date
Version:
Time and date utils library
46 lines (45 loc) • 2.24 kB
JavaScript
;
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;