UNPKG

node-web-mvc

Version:
100 lines (99 loc) 3.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkLimit = exports.padZero = void 0; const DateTimeTextProvider_1 = __importDefault(require("./DateTimeTextProvider")); const padZero = (num, count) => { let v = num.toString(); for (let i = 0, k = count - v.length; i < k; i++) { v = '0' + v; } return v; }; exports.padZero = padZero; const checkLimit = (exp, max) => { if (exp.length > max) { throw new Error(`Too many pattern letters: ${exp[0]}`); } }; exports.checkLimit = checkLimit; // 最小单位格式化器 exports.default = { // 年 'y': (date, exp, locale) => { const year = date.getFullYear(); return exp == 'yy' ? year.toString().slice(-2) : (0, exports.padZero)(year, exp.length); }, // 月(0-) MM:不足两位补0 M:不补0 MMM 简写 MMMM 全写 'M': (date, exp, locale) => { (0, exports.checkLimit)(exp, 4); const month = date.getMonth(); if (exp.length < 3) { return (0, exports.padZero)((month + 1), exp.length); } return DateTimeTextProvider_1.default.getMonth(month, locale, exp.length > 3); }, // 月份(1-12) // 日 dd:不足两位补0 d:不补0 'd': (date, exp, locale) => { (0, exports.checkLimit)(exp, 2); // d dd return (0, exports.padZero)(date.getDate(), exp.length); }, // 小时(24小时制) HH:不足两位补0 H:不补0 'H': (date, exp, locale) => { (0, exports.checkLimit)(exp, 2); return (0, exports.padZero)(date.getHours(), exp.length); }, // 小时(12小时制) hh:不足两位补0 h:不补0 'h': (date, exp, locale) => { (0, exports.checkLimit)(exp, 2); return (0, exports.padZero)(date.getHours() % 12 || 12, exp.length); }, // 分钟 mm:不足两位补0 m:不补0 'm': (date, exp, locale) => { (0, exports.checkLimit)(exp, 2); return (0, exports.padZero)(date.getMinutes(), exp.length); }, // 秒 ss:不足两位补0 s:不补0 's': (date, exp, locale) => { (0, exports.checkLimit)(exp, 2); return (0, exports.padZero)(date.getSeconds(), exp.length); }, // 毫秒 S SS SSS 根据配置返回对应的毫秒位数 'S': (date, exp, locale) => { return date.getMilliseconds().toString().slice(0, exp.length); }, // 季度 'q': (date) => Math.floor((date.getMonth() + 3) / 3).toString(), // 当月第N周 'W': (date, exp, locale) => { return DateTimeTextProvider_1.default.getWeekOfMonth(date, locale); }, // 当年的第N周 'w': (date, exp, locale) => { return DateTimeTextProvider_1.default.getWeekOfYear(date, locale); }, // 星期 'E': (date, exp, locale) => { (0, exports.checkLimit)(exp, 4); return DateTimeTextProvider_1.default.getWeek(date.getDay(), locale, exp.length === 4); }, // 上午下午 'a': (date, exp, locale) => { (0, exports.checkLimit)(exp, 5); return DateTimeTextProvider_1.default.getPAM(date.getHours(), locale); }, // 时区偏移量 'Z': (date, exp, locale) => { (0, exports.checkLimit)(exp, 5); let offsetMinutes = date.getTimezoneOffset(); const sign = offsetMinutes < 0 ? '+' : '-'; offsetMinutes = Math.abs(offsetMinutes); const hours = Math.floor(offsetMinutes / 60); const minutes = offsetMinutes % 60; return `${sign}${String(hours).padStart(2, '0')}${String(minutes).padStart(2, '0')}`; }, };