UNPKG

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
"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;