@onesy/date
Version:
Time and date utils library
64 lines (63 loc) • 2.65 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const OnesyDate_1 = __importStar(require("./OnesyDate"));
function is(value = OnesyDate_1.default.onesyDate, query, value1 = OnesyDate_1.default.onesyDate, unit = 'milliseconds', value2 = OnesyDate_1.default.onesyDate) {
if (value &&
value.valid) {
if (value1 &&
value1.valid) {
const diffs = {};
OnesyDate_1.units.forEach(unit_ => diffs[unit_] = Math.floor(value[unit_] - value1[unit_]));
const queryValue = diffs[unit];
switch (query) {
case 'before':
return queryValue < 0;
case 'after':
return queryValue > 0;
case 'same':
return queryValue === 0;
case 'between':
if (value2 &&
value2.valid) {
return ((is(value2, 'after or same', value) && is(value2, 'before or same', value1)) ||
is(value2, 'after or same', value1) && is(value2, 'before or same', value));
}
return false;
case 'before or same':
return queryValue <= 0;
case 'after or same':
return queryValue >= 0;
default:
break;
}
}
switch (query) {
case 'leap-year':
return ((value.year % 4 === 0) && (value.year % 100 !== 0)) || (value.year % 400 === 0);
case 'leap-month':
return value.month === 2 && value.daysInMonth === 29;
default:
return false;
}
}
}
exports.default = is;