vue js获取本周、本月、本年度的日期范围

先上效果图:

1.本周:

2.本月:

3.本年:



 封装js如下:

var now = new Date(); // 当前日期
var nowDayOfWeek = now.getDay(); // 今天本周的第几天
var nowDay = now.getDate(); // 当前日
var nowMonth = now.getMonth(); // 当前月
var nowYear = now.getYear(); // 当前年
nowYear += nowYear < 2000 ? 1900 : 0;
/**
 * @param 日期格式化
 * @returns {String}
 */
function formatDate(date) {
  var myyear = date.getFullYear();
  var mymonth = date.getMonth() + 1;
  var myweekday = date.getDate();

  if (mymonth < 10) {
    mymonth = "0" + mymonth;
  }
  if (myweekday < 10) {
    myweekday = "0" + myweekday;
  }
  return myyear + "-" + mymonth + "-" + myweekday;
}

/**
 * 获得当前日期
 *
 */
export function getNowDay() {
  return formatDate(new Date());
}
/**
 * 获得本周的开始时间
 *
 */
export function getStartDayOfWeek() {
  var day = nowDayOfWeek || 7;
  return formatDate(
    new Date(now.getFullYear(), nowMonth, nowDay + 1 - day)
  );
}

/**
 * 获得本周的结束时间
 *
 */
export function getEndDayOfWeek() {
  var day = nowDayOfWeek || 7;
  return formatDate(
    new Date(now.getFullYear(), nowMonth, nowDay + 7 - day)
  );
}

/**
 * 获得本月的开始时间
 *
 */
export function getStartDayOfMonth() {
  var monthStartDate = new Date(nowYear, nowMonth, 1);
  return formatDate(monthStartDate);
}

/**
 * 获得本月的结束时间
 *
 */
export function getEndDayOfMonth() {
  var monthEndDate = new Date(nowYear, nowMonth, getMonthDays());
  return formatDate(monthEndDate);
}

/**
 * 获得本月天数
 *
 */
export function getMonthDays() {
  var monthStartDate = new Date(nowYear, nowMonth, 1);
  var monthEndDate = new Date(nowYear, nowMonth + 1, 1);
  var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
  return days;
}

/**
 * 获取当前年份的第一天
 * @returns {string} 例如 2022-01-01
 */
export function getYearFirstDay() {
    var date = new Date();
    var year = date.getFullYear();
    return year + '-01-01'
}

/**
 * 获取当前年份的最后一天
 * @returns {string} 2022-12-31
 */
export function getYearLastDay(){
    var date = new Date();
    var year = date.getFullYear();
    return year + '-12-31'
}

vue代码如下:

        <el-date-picker
          v-if="selectTimeType === '0'"
          v-model="firstTime"
          value-format="yyyy-MM-dd"
          @change="onChangeFirstTime"
          clearable
          style="width:100%"
          type="daterange"
          align="right"
          unlink-panels
          :picker-options="pickerOptions"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期">
        </el-date-picker>
 return {
      pickerOptions: {
        shortcuts: [{
          text: '本周',
          onClick(picker) {
            const end = getEndDayOfWeek();
            const start = getStartDayOfWeek();
            picker.$emit('pick', [start, end]);
          }
        }, {
          text: '本月',
          onClick(picker) {
            const end = getEndDayOfMonth();
            const start = getStartDayOfMonth();
            picker.$emit('pick', [start, end]);
          }
        }, {
          text: '本年度',
          onClick(picker) {
            // const end = new Date();
            // const start = new Date();
            // start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
            const start = getYearFirstDay()
            const end = getYearLastDay()
            picker.$emit('pick', [start, end]);
          }
        }]
}

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:正在跳转

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT博客技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值