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.
238 lines
6.4 KiB
238 lines
6.4 KiB
2 years ago
|
// 公共导入模块
|
||
|
/**
|
||
|
* 时间转换
|
||
|
* @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
|
||
|
})
|