You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
4.0 KiB

4 years ago
// 从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
};