willow-utils
Version:
工具库
180 lines (139 loc) • 6.63 kB
JavaScript
;
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