47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
"use strict";
|
|
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;
|