1. 任意格式日期处理,过滤
/**
* @description 任意格式日期处理,过滤
* @param
* @returns string
*/
//任意格式日期处理
//使用格式:
// {{ '2018-09-14 01:05' | formaDate(yyyy-MM-dd hh:mm:ss) }}
// {{ '2018-09-14 01:05' | formaDate('yyyy-MM-dd') }}
// {{ '2018-09-14 01:05' | formaDate(MM/dd) }} 等
export function formaDate(value, fmt) {
if (!value) {
return ''
} else {
var date = new Date(value)
var o = {
'M+': date.getMonth() + 1, //月份
'd+': date.getDate(), //日
'h+': date.getHours(), //小时
'm+': date.getMinutes(), //分
's+': date.getSeconds(), //秒
'w+': date.getDay(), //星期
'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 (k === 'w+') {
if (o[k] === 0) {
fmt = fmt.replace('w', '周日')
} else if (o[k] === 1) {
fmt = fmt.replace('w', '周一')
} else if (o[k] === 2) {
fmt = fmt.replace('w', '周二')
} else if (o[k] === 3) {
fmt = fmt.replace('w', '周三')
} else if (o[k] === 4) {
fmt = fmt.replace('w', '周四')
} else if (o[k] === 5) {
fmt = fmt.replace('w', '周五')
} else if (o[k] === 6) {
fmt = fmt.replace('w', '周六')
}
} else 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
}
}
2.获取当前系统时间
/**
* @description 获取当前系统时间
* @param
* @returns String
*/
export function getNowTime() {
let dateTime
let date = new Date()
let year = date.getFullYear()
let month = date.getMonth() + 1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
let second = date.getSeconds()
dateTime = [year, month, day].map(formatNumber).join('-') +
'T' + [hour, minute, second].map(formatNumber).join(':')
console.log(dateTime)
return dateTime
}
function formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
}
3.获取当前系统时间+星期几
/**
* @description 获取当前系统时间+星期几
* @param
* @returns String
*/
export function getNowDateWeek() {
let dateTime
let wk = new Date().getDay()
let yy = new Date().getFullYear()
let mm = new Date().getMonth() + 1
let dd = new Date().getDate()
let weeks = [
'星期日',
'星期一',
'星期二',
'星期三',
'星期四',
'星期五',
'星期六',
]
let week = weeks[wk]
let date_show = yy + '年' + mm + '月' + dd + '日'
dateTime = date_show + ' ' + week
console.log(dateTime) //2021年9月18日 星期六
return dateTime
}
4.计算两个日期相差的天数
import { formaDate } from '@/utils/filter'
/**
* @description 计算两个日期相差的天数
* @param
* @returns Number
*/
// 计算续住的总日期列表
export function getDaysDiff(begin, end) {
let startTime = formaDate(begin, 'yyyy-MM-dd')
let endTime = formaDate(end, 'yyyy-MM-dd')
// console.log(startTime, '-------', endTime)
let arr1 = startTime.split('-') //这里可以换成/ 就2020/01/1 这种
let arr2 = endTime.split('-')
let arr1_ = new Date()
let arrTime = []
arr1_.setUTCFullYear(arr1[0], arr1[1] - 1, arr1[2])
let arr2_ = new Date()
arr2_.setUTCFullYear(arr2[0], arr2[1] - 1, arr2[2])
let unixDb = arr1_.getTime()
let unixDe = arr2_.getTime()
for (let k = unixDb; k <= unixDe;) {
arrTime.push(datetimeparse(k, 'YY-MM-DD'))
k = k + 24 * 60 * 60 * 1000
}
return arrTime
}
// 时间格式处理
function datetimeparse(timestamp, format, prefix) {
if (typeof timestamp == 'string') {
timestamp = Number(timestamp)
}
//转换时区
let currentZoneTime = new Date(timestamp)
let currentTimestamp = currentZoneTime.getTime()
let offsetZone = currentZoneTime.getTimezoneOffset() / 60 //如果offsetZone>0是西区,西区晚
let offset = null
//客户端时间与服务器时间保持一致,固定北京时间东八区。
offset = offsetZone + 8
currentTimestamp = currentTimestamp + offset * 3600 * 1000
let newtimestamp = null
if (currentTimestamp) {
if (currentTimestamp.toString().length === 13) {
newtimestamp = currentTimestamp.toString()
} else if (currentTimestamp.toString().length === 10) {
newtimestamp = currentTimestamp + '000'
} else {
newtimestamp = null
}
} else {
newtimestamp = null
}
let dateobj = newtimestamp ? new Date(parseInt(newtimestamp)) : new Date()
let YYYY = dateobj.getFullYear()
let MM =
dateobj.getMonth() > 8 ?
dateobj.getMonth() + 1 :
'0' + (dateobj.getMonth() + 1)
let DD = dateobj.getDate() > 9 ? dateobj.getDate() : '0' + dateobj.getDate()
let HH =
dateobj.getHours() > 9 ? dateobj.getHours() : '0' + dateobj.getHours()
let mm =
dateobj.getMinutes() > 9 ? dateobj.getMinutes() : '0' + dateobj.getMinutes()
let ss =
dateobj.getSeconds() > 9 ? dateobj.getSeconds() : '0' + dateobj.getSeconds()
let output = ''
let separator = '/'
if (format) {
separator = format.match(/-/) ? '-' : '/'
output += format.match(/yy/i) ? YYYY : ''
output += format.match(/MM/) ? (output.length ? separator : '') + MM : ''
output += format.match(/dd/i) ? (output.length ? separator : '') + DD : ''
output += format.match(/hh/i) ? (output.length ? ' ' : '') + HH : ''
output += format.match(/mm/) ? (output.length ? ':' : '') + mm : ''
output += format.match(/ss/i) ? (output.length ? ':' : '') + ss : ''
} else {
output += YYYY + separator + MM + separator + DD
}
output = prefix ? prefix + output : output
return newtimestamp ? output : ''
}
5.比较两个日期时间大小
export function verifyDateTime(startTime, endTime) {
let num
let _PlanEndTime = new Date(endTime)
let _PlanStartTime = new Date(startTime)
num = _PlanEndTime.getTime() - _PlanStartTime.getTime()
// console.log(_PlanEndTime.getTime() - _PlanStartTime.getTime())
return num
// if (_PlanEndTime.getTime() < _PlanStartTime.getTime()) {
// return false
// }
}
使用:
queryData() {
let startTime = this.queryForm.date1
let endTime = this.queryForm.date2
if (verifyDateTime(startTime, endTime) < 0) {
return this.$baseMessage(
`开始时间不能大于结束时间`,
'error',
false,
'vab-hey-message-error'
)
}
},
6:检查日期是否为工作日
// `date` is a Date object
const isWeekday = (date = new Date()) => date.getDay() % 6 !== 0;
7:检查日期是否是周末
// `date` is a Date object
const isWeekend = (date = new Date()) => date.getDay() % 6 === 0;
8:检查日期是否在两个日期之间
// `min`, `max` and `date` are `Date` instances
const isBetween = (date, min, max) => date.getTime() >= min.getTime() && date.getTime() <= max.getTime();
9:检查日期是否是今天
// `date` is a Date object
const isToday = (date) => date.toISOString().slice(0, 10) === new Date().toISOString().slice(0, 10);
10:检查日期是否出现在当年
// `date` is a Date object
const isCurrentYear = (date) => date.getUTCFullYear() === new Date().getUTCFullYear();