163 lines
5.1 KiB
JavaScript
163 lines
5.1 KiB
JavaScript
function formatTime(date,fmt) {
|
||
date = new Date(date);
|
||
var o = {
|
||
"M+": date.getMonth() + 1, //月份
|
||
"d+": date.getDate(), //日
|
||
"h+": date.getHours(), //小时
|
||
"m+": date.getMinutes(), //分
|
||
"s+": date.getSeconds(), //秒
|
||
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
|
||
"S": date.getMilliseconds() //毫秒
|
||
};
|
||
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||
for (var k in o)
|
||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||
return fmt;
|
||
}
|
||
|
||
function checkAuditTime(beginTime,endTime){
|
||
var nowDate = new Date();
|
||
var beginDate = new Date(nowDate);
|
||
var endDate = new Date(nowDate);
|
||
var beginIndex = beginTime.lastIndexOf("\:");
|
||
var beginHour = beginTime.substring(0,beginIndex);
|
||
var beginMinue = beginTime.substring(beginIndex+1,beginTime.length);
|
||
beginDate.setHours(beginHour,beginMinue, 0, 0);
|
||
|
||
var endIndex = endTime.lastIndexOf("\:");
|
||
var endHour = endTime.substring(0,endIndex);
|
||
var endMinue = endTime.substring(endIndex+1,endTime.length);
|
||
endDate.setHours(endHour, endMinue, 0, 0);
|
||
if(nowDate.getTime()-beginDate.getTime() >= 0 && nowDate.getTime() <= endDate.getTime()){
|
||
return true;
|
||
}else{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function formatNumber(n) {
|
||
n = n.toString()
|
||
return n[1] ? n : '0' + n
|
||
}
|
||
|
||
/**
|
||
* 时间戳转化为年 月 日 时 分 秒
|
||
* number: 传入时间戳
|
||
* format:返回格式,支持自定义,但参数必须与formateArr里保持一致
|
||
*/
|
||
function formatTimeTwo(number, format) {
|
||
number=new Date(number);
|
||
var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
|
||
var returnArr = [];
|
||
var date = new Date(number * 1000);
|
||
returnArr.push(date.getFullYear());
|
||
returnArr.push(formatNumber(date.getMonth() + 1));
|
||
returnArr.push(formatNumber(date.getDate()));
|
||
returnArr.push(formatNumber(date.getHours()));
|
||
returnArr.push(formatNumber(date.getMinutes()));
|
||
returnArr.push(formatNumber(date.getSeconds()));
|
||
for (var i in returnArr) {
|
||
format = format.replace(formateArr[i], returnArr[i]);
|
||
}
|
||
return format;
|
||
}
|
||
|
||
//截图url参数
|
||
var getQueryString = function (url, name) {
|
||
var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
|
||
var r = url.substr(1).match(reg)
|
||
if (r != null) {
|
||
return r[2]
|
||
}
|
||
return null;
|
||
}
|
||
/**
|
||
** 加法函数,用来得到精确的加法结果
|
||
** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
|
||
** 调用:accAdd(arg1,arg2)
|
||
** 返回值:arg1加上arg2的精确结果
|
||
**/
|
||
function addStringNumber(arg1, arg2) {
|
||
var r1, r2, m, c;
|
||
try {
|
||
r1 = arg1.toString().split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
r1 = 0;
|
||
}
|
||
try {
|
||
r2 = arg2.toString().split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
r2 = 0;
|
||
}
|
||
c = Math.abs(r1 - r2);
|
||
m = Math.pow(10, Math.max(r1, r2));
|
||
if (c > 0) {
|
||
var cm = Math.pow(10, c);
|
||
if (r1 > r2) {
|
||
arg1 = Number(arg1.toString().replace(".", ""));
|
||
arg2 = Number(arg2.toString().replace(".", "")) * cm;
|
||
} else {
|
||
arg1 = Number(arg1.toString().replace(".", "")) * cm;
|
||
arg2 = Number(arg2.toString().replace(".", ""));
|
||
}
|
||
} else {
|
||
arg1 = Number(arg1.toString().replace(".", ""));
|
||
arg2 = Number(arg2.toString().replace(".", ""));
|
||
}
|
||
return (((arg1 + arg2) / m) !== 0) ? ((arg1 + arg2) / m) : '0.00';
|
||
}
|
||
|
||
/**
|
||
** 减法函数,用来得到精确的减法结果
|
||
** 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。
|
||
** 调用:accSub(arg1,arg2)
|
||
** 返回值:arg1加上arg2的精确结果
|
||
**/
|
||
function subtractStringNumber(arg1, arg2) {
|
||
var r1, r2, m, n;
|
||
try {
|
||
r1 = arg1.toString().split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
r1 = 0;
|
||
}
|
||
try {
|
||
r2 = arg2.toString().split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
r2 = 0;
|
||
}
|
||
m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度
|
||
n = (r1 >= r2) ? r1 : r2;
|
||
return (((arg1 * m - arg2 * m) / m).toFixed(n) !== 0) ? ((arg1 * m - arg2 * m) / m).toFixed(n) : '0.00';
|
||
}
|
||
|
||
/** 乘法函数,用来得到精确的乘法结果 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 调用:accMul(arg1,arg2) 返回值:arg1乘以 arg2的精确结果**/
|
||
|
||
function accMul(arg1, arg2) {
|
||
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
|
||
try {
|
||
m += s1.split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
}
|
||
try {
|
||
m += s2.split(".")[1].length;
|
||
}
|
||
catch (e) {
|
||
}
|
||
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
|
||
}
|
||
|
||
module.exports = {
|
||
formatTime,
|
||
checkAuditTime,
|
||
formatTimeTwo,
|
||
getQueryString,
|
||
addStringNumber,
|
||
subtractStringNumber,
|
||
accMul
|
||
}
|