写在前面:
2018-10-16 17:51:39
非vue也是用dayjs()时使用方法
<script src="https://unpkg.com/dayjs"></script>
由于vue的时间戳获取的是当前时间的,而筛选条件(非el-input)开始时间一般是需要加上当前条件加上00:00:00,结束时间也需要加上23:59:59;因此结合dayjs简单封装下目标函数
Update 2018-10-10 18:20:44
增加dateNum小于0的设置
// 设置时间戳格式V2.0
// 适用范围本日,最近一月,最近三月,最近半年,最近一年
// 调用示例:this.getTimestampType(6,'month','start','before')距现在半年之前的时间戳
getTimestampType(datenum, dateType, handleType,add){
// @dateNum Number 天数或月数或年数
// @dateType String ['year','month','day']
// @handleType String ['start','end'],start 00:00:00;end 23:59:59
// @add String ['before','after'],before:往前,after:往后
// 字段拦截
let dateTypeArr =['year','month','day']
let dateTypeStt = dateTypeArr.includes(dateType)
if(!dateTypeStt){console.error('dateType: Type is error');return;}
let handleTypeArr =['start','end']
let handleTypeArrStt = handleTypeArr.includes(handleType)
if(!handleTypeArrStt){console.error('handleType: Type is error');return;}
let addArr =['before','after']
let addArrStt = addArr.includes(add)
if(!addArrStt){console.error('add: Type is error');return;}
let dateNum = parseInt(datenum);
if(dateNum<0){
// 如果dateNum小于0,则往前的变为往后,反之亦然
if(add == 'after'){add = 'before'}
if(add == 'before'){add = 'after'}
}
if(dateNum==0){
// 如果datenum为0,就是当前条件下的开始或结束(当年第一天或当月第一天或当前天)
if(handleType === 'start'){
return dayjs().startOf(dateType).valueOf()
}else if(handleType == 'end'){
return dayjs().endOf(dateType).valueOf()
}
}else{
if(add === 'after'){
// 计算往后的
// 大于0时,返回的是符合条件的值
if(handleType === 'start'){
return dayjs().add(Math.abs(dateNum),dateType).startOf('date').valueOf()
}else if(handleType == 'end'){
return dayjs().add(Math.abs(dateNum),dateType).endOf('date').valueOf()
}
}else if(add === 'before'){
// 计算往前的
if(handleType === 'start'){
return dayjs().subtract(Math.abs(dateNum),dateType).startOf('date').valueOf()
}else if(handleType == 'end'){
return dayjs().subtract(Math.abs(dateNum),dateType).endOf('date').valueOf()
}
}
}
},
// 设置时间格式V1.0
getTimestampType(datenum, dateType, handleType,add){
// @dateNum Number 天数或月数或年数 取值大于0,且为整数
// @dateType String 只能是'year,month,date'
// @handleType String 是开始还是结束,开始为00:00:00;结束为23:59:59
// @add String before为往前的,after
// 字段拦截
let dateTypeArr =['year','month','day']
let dateTypeStt = dateTypeArr.includes(dateType)
if(!dateTypeStt){console.error('dateType: Type is error');return;}
let handleTypeArr =['start','end']
let handleTypeArrStt = handleTypeArr.includes(handleType)
if(!handleTypeArrStt){console.error('handleType: Type is error');return;}
let addArr =['before','after']
let addArrStt = addArr.includes(add)
if(!addArrStt){console.error('add: Type is error');return;}
let dateNum = parseInt(datenum);
if(dateNum==0){
// 如果datenum为0,就是当前条件下的开始或结束(当年第一天或当月第一天或当前天)
if(handleType === 'start'){
return dayjs().startOf(dateType).valueOf()
}else if(handleType == 'end'){
return dayjs().endOf(dateType).valueOf()
}
}else if(dateNum>0){
if(add === 'after'){
// 计算往后的
if(dateNum>0){
// 大于0时,返回的是符合条件的值
if(handleType === 'start'){
return dayjs().add(dateNum,dateType).startOf('date').valueOf()
}else if(handleType == 'end'){
return dayjs().add(dateNum,dateType).endOf('date').valueOf()
}
}
}else if(add === 'before'){
// 计算往前的
if(dateNum>0){
if(handleType === 'start'){
return dayjs().subtract(dateNum,dateType).startOf('date').valueOf()
}else if(handleType == 'end'){
return dayjs().subtract(dateNum,dateType).endOf('date').valueOf()
}
}
}
}else{
console.error('dateNum: Type is error')
}
}