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