UNPKG

willow-utils

Version:

工具库

180 lines (139 loc) 6.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addSplit = addSplit; exports.formatRate = exports.formatMoney = exports.formatDate = exports.default = void 0; exports.mosaicNumber = mosaicNumber; exports.time = void 0; function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // 格式化时间 yyyy-MM-dd q hh-mm-ss S var formatDate = function formatDate() { var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date(); var fmt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; var timezoneOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -new Date().getTimezoneOffset() / 60; if (!(date instanceof Date)) { if (typeof date == 'string' && /[yMdhms]/.test(date)) { if (typeof fmt == 'number') timezoneOffset = fmt; fmt = date; date = new Date(); } else if (!isNaN(+date)) { if (+date > 0) { date = new Date(+date); } else { timezoneOffset = +date; date = new Date(); } } else if (typeof date == 'string') { date = new Date(date.replace(/-/g, '/')); } } fmt = fmt || 'yyyy-MM-dd'; date = new Date(+date + timezoneOffset * 3600 * 1000); try { var o = { //月 'M+': date.getUTCMonth() + 1, //日 'd+': date.getUTCDate(), //时 'h+': date.getUTCHours(), //分 'm+': date.getUTCMinutes(), //秒 's+': date.getUTCSeconds(), //季度 'q+': Math.floor((date.getUTCMonth() + 3) / 3), //毫秒 'S+': date.getUTCMilliseconds() }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getUTCFullYear() + '').slice(-RegExp.$1.length)); for (var k in o) { if (new RegExp("(".concat(k, ")")).test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('0000' + o[k]).slice(-RegExp.$1.length)); } return fmt; } catch (e) { return ''; } }; // 按间隔在字符串中插入指定间隔符 exports.formatDate = formatDate; function addSplit(str) { var split = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ','; var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; var direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'rtl'; var result = ''; var offset = direction === 'rtl' && str.length % size ? str.length % size - size : 0; for (var index = 0; index < str.length; index += size) { result = (result ? result + split : '') + str.substring(index + offset, index + size + offset); } return result; } // 格式化金额 默认三位一逗号 var formatMoney = function formatMoney(num) { var split = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ','; var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; if (typeof num !== 'number' && typeof num !== 'bigint') num = num === '' || isNaN(+num) ? -1 : +num; if (num === -1) return '-'; var number = num.toString(); var _number$split$filter = number.split(/[-.]/).filter(Boolean), _number$split$filter2 = _slicedToArray(_number$split$filter, 2), integer = _number$split$filter2[0], _number$split$filter3 = _number$split$filter2[1], decimal = _number$split$filter3 === void 0 ? '' : _number$split$filter3; return "".concat(num < 0 ? '-' : '').concat(addSplit(integer, split, size, 'rtl')).concat(decimal ? '.' : '').concat(addSplit(decimal, split, size, 'ltr')); }; // 格式化百分数 rate: number exports.formatMoney = formatMoney; var formatRate = function formatRate(rate, keepSymbol) { if (/[^\d\-+. ]/.test(rate + '') || !/\d/.test(rate + '')) return rate; if (!keepSymbol) rate = Math.abs(rate); return Math.round(rate * 10000) / 100 + '%'; }; // 数字打码 exports.formatRate = formatRate; function mosaicNumber(num) { if (/^[\d\-.+]+$/.test(num + '')) { if (num > 1000) num = ~~(num / 1000) + '000+';else if (num > 100) num = ~~(num / 100) + '00+';else if (num > 10) num = ~~(num / 10) + '0+'; } return num; } // 时间节点 var time = { init: function init(year) { var month = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var date = time.月初; year && date.setFullYear(year); date.setMonth(month); return date; }, get 月初() { var time = new Date(~~(Date.now() / 36e5) * 36e5); // 分秒归零 time.setHours(0); // 设为0点 time.setDate(1); // 设为1号 return time; }, get 去年末() { return new Date(this.月初.setMonth(-1)); }, get 去年初() { return new Date(this.月初.setMonth(-12)); }, get 前年末() { return new Date(this.月初.setMonth(-13)); }, get 前年初() { return new Date(this.月初.setMonth(-24)); } }; exports.time = time; var _default = { formatDate: formatDate, addSplit: addSplit, formatMoney: formatMoney, formatRate: formatRate, mosaicNumber: mosaicNumber, time: time }; exports.default = _default; //# sourceMappingURL=maps/formatUtil.js.map