// 时间格式化
const formatTime = date => {
const year = new Date(date).getFullYear()
const month = new Date(date).getMonth() + 1
const day = new Date(date).getDate()
const hour = new Date(date).getHours()
const minute = new Date(date).getMinutes()
const second = new Date(date).getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
/**
* 用于post 参数格式转换
*/
function json2Form(json) {
var str = [];
for (var p in json) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
}
return str.join("&");
}
// 对象数组去重
Array.prototype.filter = function () {
let emptyObj = {} //创建空对象,用于存放属性
let result = [] //结果数组,用于存放结果
for (let i = 0; i < this.length; i++) {//this指向调用该方法的数组
this[i] = JSON.stringify(this[i])//将对象解析为字符串便于比较
if (!emptyObj[this[i]]) {//以emptyObj是否存在该字符串为名的属性进行判断
emptyObj[this[i]] = 1 //将emptyObj的this[i]属性设为1,便于判断
result.push(JSON.parse(this[i]))//将字符串重新解析为对象
}
}
return result //返回结果
}
// 价格过滤
function currency(value, currency, decimals) {
const digitsRE = /(d{3})(?=d)/g
value = parseFloat(value)
if (!isFinite(value) || (!value && value !== 0)) return ''
currency = currency != null ? currency : '$'
decimals = decimals != null ? decimals : 2
var stringified = Math.abs(value).toFixed(decimals)
var _int = decimals
? stringified.slice(0, -1 - decimals)
: stringified
var i = _int.length % 3
var head = i > 0
? (_int.slice(0, i) + (_int.length > 3 ? ',' : ''))
: ''
var _float = decimals
? stringified.slice(-1 - decimals)
: ''
var sign = value < 0 ? '-' : ''
return sign + currency + head +
_int.slice(i).replace(digitsRE, '$1,') +
_float
}
/**
* 时间戳转化为年 月 日 时 分 秒
* number: 传入时间戳
* format:返回格式,支持自定义,但参数必须与formateArr里保持一致
*/
function formatDatebox(value, parent) {
if (value == null || value == '') {
return '';
}
var dt = parseToDate(value);// 关键代码,将那个长字符串的日期值转换成正常的JS日期格式
return dt.format(parent); // 这里用到一个javascript的Date类型的拓展方法,这个是自己添加的拓展方法,在后面的步骤3定义
}
function parseToDate(value) {
if (value == null || value == '') {
return undefined;
}
var dt;
if (value instanceof Date) {
dt = value;
} else {
if (!isNaN(value)) {
dt = new Date(value);
} else if (value.indexOf('/Date') > -1) {
value = value.replace(//Date(−?d+)//, '$1');
dt = new Date();
dt.setTime(value);
} else if (value.indexOf('/') > -1) {
dt = new Date(Date.parse(value.replace(/-/g, '/')));
} else {
dt = new Date(value);
}
}
return dt;
}
// 为Date类型拓展一个format方法,用于格式化日期
Date.prototype.format = function (format) // author: meizz
{
var o = {
"M+": this.getMonth() + 1, // month
"d+": this.getDate(), // day
"h+": this.getHours(), // hour
"m+": this.getMinutes(), // minute
"s+": this.getSeconds(), // second
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
// millisecond
};
if (/(y+)/.test(format))
format = format.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
: ("00" + o[k]).substr(("" + o[k]).length));
return format;
};
//两日期相减获得天数
function num_data(startDate,endDate) {
var end_date = new Date(endDate.replace(/-/g, "/"));
var start_date = new Date(startDate.replace(/-/g, "/"));
var days = end_date.getTime() - start_date.getTime();
var day = parseInt(days / (1000 * 60 * 60 * 24));
return day;
}
module.exports = {
formatTime,
json2Form,
formatDatebox,
num_data
}