/eslint-disable/
1、时间处理 引入js文件
import { dateFormat } from 'utilsTime'; 或者直接使用
/**
* 格式化时间
*
* @param {any} date
* @param {any} format
* @returns
*/
function dateFormat(date, format) {
let format1 = format;
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'H+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds(),
'q+': Math.floor((date.getMonth() + 3) / 3),
'S+': date.getMilliseconds()
};
if (!format1) {
format1 = 'yyyy-MM-dd';
}
if (/(y+)/.test(format1)) {
format1 = format1.replace(
RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length)
);
}
if (/(S+)/.test(format1)) {
format1 = format1.replace(
RegExp.$1,
(date.getMilliseconds() + '').substr(3 - RegExp.$1.length)
);
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format1)) {
format1 = format1.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
);
}
}
return format1;
}
2、 当天 近七天 近三天时间转换
/**
* @method handleTimeTransfer
* @description 当天 近七天 近三天时间转换
* @param {number} param
*/
handleTimeTransfer(param) {
let ONE_DAY = 1000 * 60 * 60 * 24;
let endTimeStr = new Date();
let startTimeStr = new Date(+endTimeStr - (param - 1) * ONE_DAY);
startTimeStr = dateFormat(startTimeStr, 'yyyy-MM-dd');
endTimeStr = dateFormat(endTimeStr, 'yyyy-MM-dd');
let params = {
start: startTimeStr + ' 00:00:00',
end: endTimeStr + ' 23:59:59'
};
let dateTime = [`${params.start}`, `${params.end}`];
// console.log('时间params', params, dateTime);
this.formData.startDateStr = dateTime[0];
this.formData.endDateStr = dateTime[1];
this.formData.dateTime = dateTime;
// console.log('dateTime', dateTime);
return dateTime;
},
3、调用方法
this.handleTimeTransfer(1);
3、element 默认一周
import { getCurrentTime, getDayBeforeCurrentTime } from "@/utils/index";
date: [getDayBeforeCurrentTime(), getCurrentTime()]
<div>
<span>选择时间:</span>
<el-date-picker
class="white custom"
size="medium"
type="datetimerange"
:range-separator="$t('global.rangeSeparator')"
start-placeholder="开始时间"
end-placeholder="结束时间"
v-model="date"
value-format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00','23:59:59']"
unlink-panels
@change="periodChange"
v-bind="$attrs"
v-on="$listeners"
/>
</div>
//原生本日、近3天、近7天/一周
export default {
'label.timeSpaceCollision.today': '今天',
'label.timeSpaceCollision.lastThreeDays': '最近三天',
'label.timeSpaceCollision.lastWeek': '最近一周',
'label.timeSpaceCollision.matchConditionsNumber': '匹配条件数'
};
lateOptions: {
shortcuts: [
{
text: this.$t('label.timeSpaceCollision.today'),
value() {
const end = new Date();
const start = new Date().setHours(0, 0, 0);
return [start, end];
}
},
{
text: this.$t('label.timeSpaceCollision.lastThreeDays'),
value() {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 3);
return [start, end];
}
},
{
text: this.$t('label.timeSpaceCollision.lastWeek'),
value() {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
}
}
]
},
```js
4、时间间隔不能超过一个月
<span>开始时间:</span>
<el-date-picker
v-model="startTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="开始时间">
</el-date-picker>
this.startTime = moment(this.startTime).format("YYYY-MM-DD HH:mm:ss");
this.endTime = moment(this.endTime).format("YYYY-MM-DD HH:mm:ss");
const range = 30 * 24 * 3600 * 1000;
const start = new Date(this.startTime).getTime();
const end = new Date(this.endTime).getTime();
if (start > end) {
this.$message.error("开始时间不能大于结束时间");
return false;
}
if (end - start > range) {
this.$message.error("时间间隔不能超过一个月");
return false;
}
5、 使用moment
getTime() {
// this.currentTime = moment().format('YYYY-MM-DD');
this.startTime = moment().format('YYYY-MM-DD');
this.endTime = moment().format('YYYY-MM-DD');
console.log('初始化本日', this.endTime);
},
btnHandle(item, index) {
this.curbtn = index;
switch (this.curbtn) {
case 0:
this.startTime = moment().format('YYYY-MM-DD');
this.endTime = moment().format('YYYY-MM-DD');
console.log('本日', index, this.startTime, this.endTime);
break;
case 1:
const wd = moment().format('E'); //计算今天是这周第几天
this.startTime = moment()
.subtract(wd - 1, 'days')
.format('YYYY-MM-DD');
this.endTime = moment()
.add(7 - wd, 'days')
.format('YYYY-MM-DD');
console.log('本周第一天与最后一天', index, this.startTime, this.endTime);
break;
case 2:
this.startTime = moment()
.startOf('month')
.format('YYYY-MM-DD');
this.endTime = moment()
.endOf('month')
.format('YYYY-MM-DD');
console.log('本月第一天与最后一天', index, this.startTime, this.endTime);
break;
case 3:
this.startTime = moment()
.startOf('year')
.format('YYYY-MM-DD');
this.endTime = moment()
.endOf('year')
.format('YYYY-MM-DD');
console.log('本年第一天与最后一天', index, this.startTime, this.endTime);
break;
}
}
6、js本月第一天与最后一天
// 获取当前月第一天
getCurrentMonthFirstDay() {
let date = new Date();
date.setDate(1);
let month = parseInt(date.getMonth() + 1);
let day = date.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
this.curDateS = date.getFullYear() + "-" + month + "-" + day;
},
//获取当前月最后一天
getNowFormatDate() {
var dateE = new Date();
let currentMonth = dateE.getMonth();
let nextMonth = ++currentMonth;
let nextMonthFirstDay = new Date(dateE.getFullYear(), nextMonth, 1);
let oneDay = 1000 * 60 * 60 * 24;
let lastTime = new Date(nextMonthFirstDay - oneDay);
let month = parseInt(lastTime.getMonth() + 1);
let day = lastTime.getDate();
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
this.curDateE = dateE.getFullYear() + "-" + month + "-" + day;
}