// 公共导入模块 /** * 时间转换 * @param {Date} date 日期 * @param {String} fmt 格式(yyyy-MM-dd hh:mm:ss) */ function format(date, fmt) { if (fmt.indexOf('mm-dd') !== -1) return console.error('Date format 格式mm请使用大写MM') date = !date ? new Date() : new Date(date) var o = { 'M+': date.getMonth() + 1, //月份 'd+': date.getDate(), //日 'H+': date.getHours(), //小时 '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 } /** * 时间转换 * @param {Date} date 日期 * @param {String} type 格式 */ function dateFormat(date, type) { var Y, M, D date = !date ? new Date() : new Date(date) Y = date.getFullYear() M = date.getMonth() + 1 D = date.getDate() if (M < 10) M = '0' + M if (D < 10) D = '0' + D if (!type || type === 'yyyy-MM-dd') return Y + '-' + M + '-' + D if (type === 'yyyy-mm-dd') return console.error('请用yyyy-MM-dd!') if (type === 'MM-dd') return M + '-' + D if (type === 'txt') return Y + '年' + M + '月' + D + '日' } /** * 计算周期 * @param {Number} begin 从第几天开始,0:当天,1:明天,以此类推 * @param {Number} sum 获取几天 */ function getWeek(date, begin, sum) { var weeks = [] var weekItem, week var index = 0 var day for (var i = begin; i <= sum; i++) { day = new Date(new Date(date).getTime() + i * 24 * 60 * 60 * 1000) if (day.getDay() === 0) week = '周日' if (day.getDay() === 1) week = '周一' if (day.getDay() === 2) week = '周二' if (day.getDay() === 3) week = '周三' if (day.getDay() === 4) week = '周四' if (day.getDay() === 5) week = '周五' if (day.getDay() === 6) week = '周六' weekItem = { index: index, date: this.format(day, 'yyyy-MM-dd'), dateTitle: this.format(day, 'MM-dd'), weekTitle: week } weeks.push(weekItem) index++ } return weeks } /** * 判断日期是否是今天 * @param {String} date 被判断日期 * @param {Date} today 今天 */ function isToday(date, today) { date = new Date(date.toString().replace(/-/g, '/')) if (!today) today = new Date() today = new Date(today) return date.setHours(0, 0, 0, 0) == today.setHours(0, 0, 0, 0) } /** * 判断日期是否大于当前日期(不含时间) * @param {String} date 被判断日期 * @param {Date} curDate 当前日期 可选,默认是今天 */ function isFutureDay(date, curDate) { var day = new Date(Date.parse(date.replace(/-/g, '/'))) if (!curDate) curDate = new Date() console.log(day, curDate) return day > curDate } /** * 判断是否在某天的,某个时间范围内 * @param {String} begTime 开始时间(例如:00:00) * @param {String} endTime 结束时间(例如:17:30) * @param {String} date 被判断时间,默认是今天 */ function inTimeRange(begTime, endTime, date) { date = !date ? new Date() : new Date(date) // 判断是哪天,默认今天 var curDay = new Date(date.toString().replace(/-/g, '/')) var todaysDate = new Date() if (curDay.setHours(0, 0, 0, 0) !== todaysDate.setHours(0, 0, 0, 0)) { return false } var strb = begTime.split(':') if (strb.length !== 2 && strb.length !== 3) { return false } var stre = endTime.split(':') if (stre.length !== 2 && stre.length !== 3) { return false } var b = new Date(date) var e = new Date(date) var n = new Date(date) b.setHours(strb[0]) b.setMinutes(strb[1]) b.setSeconds(0) e.setHours(stre[0]) e.setMinutes(stre[1]) e.setSeconds(59) return n.getTime() - b.getTime() > 0 && n.getTime() - e.getTime() < 0 } /** * 获取定时周期 * @param {Number} weekNum 指定星期(1-7) * @param {Number} begNum 隔几天,默认相隔一天,例如预约挂号 * @param {Date} date 日期 */ function getTimeEndPointWeek(weekNum, begNum, date) { // 云龙 if (typeof weekNum !== 'number' || weekNum === 0) weekNum = 7 // 默认星期天 if (typeof begNum !== 'number') begNum = 1 // 默认从第二天开始 if (!date) date = new Date() date = new Date(date) return this.getWeek(date, begNum, weekNum - date.getDay()) } /** * 以一个时间点为基准,计算相邻日期 * @param {Date} date 时间点 * @param {Number} days 相差天数可以为负数 * @param {String} fmt 格式yyyy-MM-dd */ function computDate(date, days, fmt) { var day = new Date(new Date(date).getTime() + days * 24 * 60 * 60 * 1000) if (!fmt) return day return format(new Date(day), fmt) } Object.freeze(window.DateUtil = { format, dateFormat, getWeek, isToday, isFutureDay, inTimeRange, getTimeEndPointWeek, computDate }) //----------------------------------------------------------------------------------------- /** * 根据URL获取URL中的参数值 * * @param {String} variable * @returns 参数值 */ function getQueryVar(variable) { var query = decodeURI(window.location.search).substring(1) var vars = query.split('&') for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('=') if (pair[0] === variable) { return pair[1] === undefined || pair[1] === 'undefined' ? '' : pair[1] } } return '' } /** * 根据URL获取html页面名称 * @returns 页面名称 */ function getHtmlFileName() { var path = window.location.href path = path.substring(0, path.lastIndexOf('.html')) path = path.substring(path.lastIndexOf('/') + 1) return path + '.html' } /** * 获取web项目路径 * * @param {String} isOrigin 是否含有域名 * @returns 路径 */ function getWebPath(isOrigin) { var pathname = window.location.pathname pathname = pathname.substring(0, pathname.lastIndexOf('/')) return !isOrigin ? pathname : window.location.origin + pathname } Object.freeze(window.URLUtil = { getWebPath, getQueryVar, getHtmlFileName })