date-manip
Version:
A lightweight JavaScript date utility library that provides modularity, high performance, and additional features. It supports various date operations, including date addition and subtraction, formatting, comparison, etc.
47 lines (46 loc) • 1.21 kB
JavaScript
;
const units = require("./units.js");
const constants = require("./constants-DR3SPJ7u.js");
const normalizeUnit = require("./normalizeUnit-Cn0hUyBC.js");
const { DATE, DAY, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, TIME, YEAR } = units;
const mapping = {
[YEAR]: "FullYear",
[MONTH]: "Month",
[DATE]: "Date",
[DAY]: "Day",
[HOUR]: "Hours",
[MINUTE]: "Minutes",
[SECOND]: "Seconds",
[MILLISECOND]: "Milliseconds",
[TIME]: "Time"
};
const setting = {};
const getting = {};
Object.entries(mapping).forEach(([key, method]) => {
if (key === DAY) {
setting[key] = function(date, val) {
const day = date.getDay();
if (val !== day) {
date.setTime(+date + (val - day) * constants.MS_IN_DAY);
}
};
} else {
setting[key] = function(date, val) {
date[`set${method}`](val);
};
}
getting[key] = function(date) {
return date[`get${method}`]();
};
});
function get(date, unit) {
const fn = getting[normalizeUnit.normalizeUnit(unit)];
return fn ? fn(date) : 0;
}
function set(date, unit, val) {
const fn = setting[normalizeUnit.normalizeUnit(unit)];
fn && fn(date, val);
return date;
}
exports.get = get;
exports.set = set;