2、当天 近七天 近三天时间转换

124 阅读2分钟

/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 默认一周

11.png

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;
    }

7、 近2天、3天、7天