|
|
// 从2018-09-01 15:30:27 中提取出 15:30
|
|
|
var hmTimeFrom = function (dateStr) {
|
|
|
return dateStr.substring(11, 16);
|
|
|
}; // 算出2个dateStr间的时间间隔,例如 2018-09-01 15:30:27 到 2018-09-02 03:28:09,中间相差'd天h小时m分钟'
|
|
|
|
|
|
|
|
|
var intervalBetween = function (startDateStr, endDateStr) {
|
|
|
var startDate = dateFromDateStr(startDateStr);
|
|
|
var endDate = dateFromDateStr(endDateStr);
|
|
|
var startTimestamp = startDate.getTime();
|
|
|
var endTimestamp = endDate.getTime();
|
|
|
var deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
|
|
|
var days = Math.floor(deltaTimestamp / (24 * 3600));
|
|
|
var hours = Math.floor((deltaTimestamp - days * 24 * 3600) / 3600);
|
|
|
var minutes = Math.floor((deltaTimestamp - days * 24 * 3600 - hours * 3600) / 60);
|
|
|
var ret = '';
|
|
|
if (days > 0) ret += days + 'd';
|
|
|
if (hours > 0) ret += hours + 'h';
|
|
|
if (minutes > 0) ret += minutes + 'm';
|
|
|
return ret;
|
|
|
}; // 算出24小时内的2个时间间隔,例如 12:00 到 15:30,中间相差'h小时m分钟'
|
|
|
|
|
|
|
|
|
var intervalBetween24h = function (startDateStr, endDateStr, isCN) {
|
|
|
var startComponents = startDateStr.split(':');
|
|
|
var endComponents = endDateStr.split(':');
|
|
|
var startH = startComponents[0];
|
|
|
var startM = startComponents[1];
|
|
|
var endH = endComponents[0];
|
|
|
var endM = endComponents[1];
|
|
|
var deltaTimestamp = 0;
|
|
|
|
|
|
if (endH > startH || endH == startH && endM > startM) {
|
|
|
// 不跨天
|
|
|
// Start
|
|
|
var startDate = getDate(2018, 1, 1, startH, startM, 0);
|
|
|
var startTimestamp = startDate.getTime(); // End
|
|
|
|
|
|
var endDate = getDate(2018, 1, 1, endH, endM, 0);
|
|
|
var endTimestamp = endDate.getTime(); // delta
|
|
|
|
|
|
deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
|
|
|
} else {
|
|
|
// 跨天
|
|
|
// Start
|
|
|
var startDate = getDate(2018, 1, 1, startH, startM, 0);
|
|
|
var startTimestamp = startDate.getTime(); // End
|
|
|
|
|
|
var endDate = getDate(2018, 1, 2, endH, endM, 0);
|
|
|
var endTimestamp = endDate.getTime(); // delta
|
|
|
|
|
|
deltaTimestamp = Math.floor((endTimestamp - startTimestamp) / 1000);
|
|
|
} // 拼接返回值
|
|
|
|
|
|
|
|
|
var days = Math.floor(deltaTimestamp / (24 * 3600));
|
|
|
var hours = Math.floor((deltaTimestamp - days * 24 * 3600) / 3600);
|
|
|
var minutes = Math.floor((deltaTimestamp - days * 24 * 3600 - hours * 3600) / 60);
|
|
|
var ret = '';
|
|
|
|
|
|
if (isCN) {
|
|
|
if (days > 0) ret += days + '天';
|
|
|
if (hours > 0) ret += hours + '小时';
|
|
|
if (minutes > 0) ret += minutes + '分钟';
|
|
|
} else {
|
|
|
if (days > 0) ret += days + 'd';
|
|
|
if (hours > 0) ret += hours + 'h';
|
|
|
if (minutes > 0) ret += minutes + 'm';
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
}; // dateStr转Date类型
|
|
|
|
|
|
|
|
|
var dateFromDateStr = function (dateStr) {
|
|
|
var components = dateStr.split(' ');
|
|
|
var dateComponents = components[0].split('-');
|
|
|
var timeComponents = components[1].split(':');
|
|
|
var totalComponents = dateComponents.concat(timeComponents);
|
|
|
return getDate(parseInt(totalComponents[0]), parseInt(totalComponents[1]) - 1, parseInt(totalComponents[2]), parseInt(totalComponents[3]), parseInt(totalComponents[4]), parseInt(totalComponents[5]), 0);
|
|
|
}; // 判断是否跨天, 例如 12:00 到 11:30 为跨天
|
|
|
|
|
|
|
|
|
var isCrossDay = function (startDateStr, endDateStr) {
|
|
|
var startComponents = startDateStr.split(':');
|
|
|
var endComponents = endDateStr.split(':');
|
|
|
var startH = startComponents[0];
|
|
|
var startM = startComponents[1];
|
|
|
var endH = endComponents[0];
|
|
|
var endM = endComponents[1];
|
|
|
return endH < startH || endH == startH && endM < startM;
|
|
|
};
|
|
|
|
|
|
var numberUtil = {
|
|
|
numberFormat: function (value) {
|
|
|
var v = parseFloat(value); //强转Int,毕竟有可能返回是String类型的数字
|
|
|
|
|
|
return v.toFixed(2);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
var rorderStatusDic = function (status) {
|
|
|
var orderStatusDic = {
|
|
|
'0': '待确认',
|
|
|
'10': '待派单',
|
|
|
'20': '进行中',
|
|
|
'100': '已完成'
|
|
|
};
|
|
|
return orderStatusDic[status];
|
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
|
hmTimeFrom: hmTimeFrom,
|
|
|
intervalBetween: intervalBetween,
|
|
|
intervalBetween24h: intervalBetween24h,
|
|
|
isCrossDay: isCrossDay,
|
|
|
numberFormat: numberUtil.numberFormat,
|
|
|
//暴露接口调用
|
|
|
rorderStatusDic: rorderStatusDic
|
|
|
}; |