1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // 日期格式化
- export function parseTime(time, pattern) {
- if (arguments.length === 0 || !time) {
- return null
- }
- const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
- let date
- if (typeof time === 'object') {
- date = time
- } else {
- if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
- time = parseInt(time)
- } else if (typeof time === 'string') {
- time = time.replace(new RegExp(/-/gm), '/');
- }
- if ((typeof time === 'number') && (time.toString().length === 10)) {
- time = time * 1000
- }
- date = new Date(time)
- }
- const formatObj = {
- y: date.getFullYear(),
- m: date.getMonth() + 1,
- d: date.getDate(),
- h: date.getHours(),
- i: date.getMinutes(),
- s: date.getSeconds(),
- a: date.getDay()
- }
- const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
- let value = formatObj[key]
- // Note: getDay() returns 0 on Sunday
- if (key === 'a') {
- return ['日', '一', '二', '三', '四', '五', '六'][value]
- }
- if (result.length > 0 && value < 10) {
- value = '0' + value
- }
- return value || 0
- })
- return time_str
- }
- //除法去除精度损失
- export function accDiv(arg1, arg2) {
- if(!arg1 || !arg2){
- if(arg2 == 0){
- return Infinity
- }
- return arg1/arg2
- }
- var t1 = 0, t2 = 0, r1, r2;
- try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
- try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
- r1 = Number(arg1.toString().replace(".", ""));
- r2 = Number(arg2.toString().replace(".", ""));
- if(r2==0){
- return Infinity;
- }else{
- return (r1 / r2) * Math.pow(10, t2 - t1);
- }
- }
- export function numberFormat(number, decimals = 2, dec_point = '.', thousands_sep = ',') {
- /*
- * 参数说明:
- * number:要格式化的数字
- * decimals:保留几位小数
- * dec_point:小数点符号
- * thousands_sep:千分位符号
- * */
- number = accDiv(number,100)
- number = (number + '').replace(/[^0-9+-Ee.]/g, '');
- var n = !isFinite(+number) ? 0 : +number,
- prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
- sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
- dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
- s = '',
- toFixedFix = function (n, prec) {
- var k = Math.pow(10, prec);
- return '' + Math.round(n * k) / k;
- };
- s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
- var re = /(-?\d+)(\d{3})/;
- while (re.test(s[0])) {
- s[0] = s[0].replace(re, "$1" + sep + "$2");
- }
- if ((s[1] || '').length < prec) {
- s[1] = s[1] || '';
- s[1] += new Array(prec - s[1].length + 1).join('0');
- }
- return s.join(dec);
- }
|