UNPKG

@technobuddha/library

Version:
127 lines (126 loc) 7.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatDate = void 0; var constants_1 = require("../constants"); var padNumber_1 = __importDefault(require("../padNumber")); var ordinal_1 = __importDefault(require("../ordinal")); var getDayOfYear_1 = __importDefault(require("../getDayOfYear")); var getISOWeekOfYear_1 = __importDefault(require("../getISOWeekOfYear")); var getTimezone_1 = __importDefault(require("../getTimezone")); var getJulian_1 = __importDefault(require("../getJulian")); var getDayOfWeek_1 = __importDefault(require("../getDayOfWeek")); var tokenizer = /[hHmDfO]{1,2}|[s]{1,3}|YYYY|YY|[Md]{1,4}|W(y|w{1,2}|d)|TZ|GMT|TH|T{1,2}|AM|PM|CE|BCE|AD|BC|E{2,3}|J|Q|"[^"]*"|'[^']*'/ug; var masks = Object.freeze({ 'default': 'YYYY-MM-DD hh:mm:ss.ff', 'rfc1123': 'ddd, DD MMM YYYY hh:mm:ss GMT', 'asctime': 'ddd MMM DD hh:mm:ss', 'shortDate': 'M/D/YY', 'mediumDate': 'MMM D, YYYY', 'longDate': 'MMMM D, YYYY', 'fullDate': 'dddd, MMMM D, YYYY', 'shortTime': 'H:mm TT', 'shortDateTime': 'M/D/YYYY H:mm TT', 'mediumTime': 'H:mm:ss TT', 'mediumDateTime': 'MMM D, YYYY H:mm:ss TT', 'longTime': 'H:mm:ss TT GMT', 'longDateTime': 'MMMM D, YYYY H:mm:ss TT GMT', 'ISODate': 'YYYY-MM-DD', 'ISODateTime': 'YYYY-MM-DD"T"hh:mm:ss', 'ISODateFull': 'YYYY-MM-DD"T"hh:mm:ss.ff', 'ISODateTimeZone': 'YYYY-MM-DD"T"hh:mm:ssTZ', 'ISODateFullZone': 'YYYY-MM-DD"T"hh:mm:ss.ffTZ', 'ISOTime': 'hh:mm:ss', 'ISOTimeFull': 'hh:mm:ss.ff', 'ISOTimeZone': 'hh:mm:ssTZ', 'ISOFullZone': 'hh:mm:ss.ffTZ', 'ISOWeek': 'Wy"W"Www-Wd', 'ISOWeekTime': 'Wy"W"Www-Wd"T"hh:mm:ss', 'ISOWeekFull': 'Wy"W"Www-Wd"T"hh:mm:ss.ff', 'ISOWeekTimeZone': 'Wy"W"Www-Wd"T"hh:mm:ssTZ', 'ISOWeekFullZone': 'Wy"W"Www-Wd"T"hh:mm:ss.ffTZ', 'ISOOrdinal': 'YYYY-OO', 'cookie': 'dddd, DD MMM YYYY hh:mm:ss GMT', }); var dayOne = ['U', 'M', 'T', 'W', 'R', 'F', 'S']; var dayTwo = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']; var dayAbbrev = ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat']; var dayName = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; var monthAbbrev = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; var monthName = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; /** * Format a date * * @param input The date * @param mask The mask * @param __namedParameters see {@link Options} * @default UTC false */ function formatDate(input, mask, _a) { var _b = _a === void 0 ? {} : _a, _c = _b.UTC, UTC = _c === void 0 ? false : _c; mask = mask ? (mask in masks ? masks[mask] : mask) : masks.default; var da = UTC ? input.getUTCDate() : input.getDate(); var dy = UTC ? input.getUTCDay() : input.getDay(); var mo = UTC ? input.getUTCMonth() : input.getMonth(); var yr = UTC ? input.getUTCFullYear() : input.getFullYear(); var ho = UTC ? input.getUTCHours() : input.getHours(); var mi = UTC ? input.getUTCMinutes() : input.getMinutes(); var se = UTC ? input.getUTCSeconds() : input.getSeconds(); var ms = UTC ? input.getUTCMilliseconds() : input.getMilliseconds(); var o = UTC ? 0 : input.getTimezoneOffset(); return mask.replace(tokenizer, function (token) { switch (token) { case 'h': return padNumber_1.default(ho, 0); //Hours (24) case 'hh': return padNumber_1.default(ho, 2); //Hours (24) case 'H': return padNumber_1.default(ho % 12 || 12, 0); //Hours (12) case 'HH': return padNumber_1.default(ho % 12 || 12, 2); //Hours (12) case 'm': return padNumber_1.default(mi, 0); //Minutes case 'mm': return padNumber_1.default(mi, 2); //Minutes case 's': return padNumber_1.default(se, 0); //Seconds case 'ss': return padNumber_1.default(se, 2); //Seconds case 'sss': return padNumber_1.default(ho * constants_1.secondsPerHour + mi * constants_1.secondsPerMinute + se, 0); //Seconds case 'f': return padNumber_1.default(ms, 0); //Milliseconds case 'ff': return padNumber_1.default(ms, 3); //Milliseconds case 'YYYY': return padNumber_1.default(yr < 1 ? -yr + 1 : yr, 4); //Year case 'YY': return padNumber_1.default((yr < 1 ? -yr + 1 : yr) % 100, 2); //Year case 'M': return padNumber_1.default(mo + 1, 0); //Month case 'MM': return padNumber_1.default(mo + 1, 2); //Month case 'MMM': return monthAbbrev[mo]; //Month case 'MMMM': return monthName[mo]; //Month case 'D': return padNumber_1.default(da, 0); //Day case 'DD': return padNumber_1.default(da, 2); //Day case 'TH': return ordinal_1.default(da); case 'd': return dayOne[dy]; //WeekDay case 'dd': return dayTwo[dy]; case 'ddd': return dayAbbrev[dy]; //WeekDay case 'dddd': return dayName[dy]; case 'O': return padNumber_1.default(getDayOfYear_1.default(input, { UTC: UTC }), 0); //Day of Year (1-366) case 'OO': return padNumber_1.default(getDayOfYear_1.default(input, { UTC: UTC }), 3); //Day of Year (1-366) case 'Wy': return padNumber_1.default(getISOWeekOfYear_1.default(input, { UTC: UTC }).year, 0); case 'Ww': return padNumber_1.default(getISOWeekOfYear_1.default(input, { UTC: UTC }).week, 0); //Week of Year (1-53) case 'Www': return padNumber_1.default(getISOWeekOfYear_1.default(input, { UTC: UTC }).week, 2); // case 'Wd': return padNumber_1.default(getDayOfWeek_1.default(input, { UTC: UTC }), 0); case 'TZ': return getTimezone_1.default(o); case 'GMT': return getTimezone_1.default(o, { GMT: true }); case 'AM': return ho < 12 ? 'AM' : ''; //AM / -- case 'PM': return ho < 12 ? '' : 'PM'; //-- / PM case 'T': return ho < 12 ? 'A' : 'P'; //A / P case 'TT': return ho < 12 ? 'AM' : 'PM'; //AM / PM case 'AD': return yr < 1 ? '' : 'AD'; //-- / AD case 'BC': return yr < 1 ? 'BC' : ''; //BC / -- case 'CE': return yr < 1 ? '' : 'CE'; //-- / CE case 'BCE': return yr < 1 ? 'BCE' : ''; //BCE / -- case 'EE': return yr < 1 ? 'BC' : 'AD'; //BC / AD case 'EEE': return yr < 1 ? 'BCE' : 'CE'; //BCE / CE case 'J': return padNumber_1.default(Math.floor(getJulian_1.default(input)), 0); case 'Q': return padNumber_1.default(Math.floor((mo + 3) / 3), 0); //RM: Month in roman numerals (UC); //rm: Month in roman numerals (LC); default: return token.slice(1, -1); } }); } exports.formatDate = formatDate; exports.default = formatDate;