moment 获取当前月日历

本文介绍了一种使用Vue和Moment.js获取并显示当前月份日历的方法,包括如何计算当前月、上月和下月的天数,以及如何正确显示这些天数在日历上的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取当前月日历

<template>

<div>
  <div style="width:100%;background:rgb(255,255,255);">

    <table cellpadding="0" cellspacing="0" id="1">
      <tr>
          <td>
              <div id="cal">
                <div id="top">{{date}}</div>

                <ul id="wk">
                    <li><b></b></li>
                    <li></li>
                    <li></li>
                    <li></li>
                    <li></li>
                    <li></li>
                    <li><b></b></li>
                </ul>

                <ul id="wk" v-for="item in arr" :key="item.id">
                    <li ><span :class="item[0].day == date.substring(8) ? 'choose' :''">{{item[0].day}}</span>&nbsp;</li>
                    <li><span :class="item[1].day == date.substring(8) ? 'choose' :''">{{item[1].day}}</span>&nbsp;</li>
                    <li><span :class="item[2].day == date.substring(8) ? 'choose' :''">{{item[2].day}}</span>&nbsp;</li>
                    <li><span :class="item[3].day == date.substring(8) ? 'choose' :''">{{item[3].day}}</span>&nbsp;</li>
                    <li><span :class="item[4].day == date.substring(8) ? 'choose' :''">{{item[4].day}}</span>&nbsp;</li>
                    <li><span :class="item[5].day == date.substring(8) ? 'choose' :''">{{item[5].day}}</span>&nbsp;</li>
                    <li><span :class="item[6].day == date.substring(8) ? 'choose' :''">{{item[6].day}}</span>&nbsp;</li>
                </ul>
                <div id="bm"></div>

              </div>
          </td>
      </tr>
    </table>
  </div>

</div>


</template>

<script>

  import moment from 'moment'
  export default {
    data() {
        return{
           currentMonthDays:'',
           currentWeekday:'',
           lastMonthDays:'',
           date:'2019-06-06',
           arr:[],
        }
    },
    methods: {
      getData(){
      this.currentWeekday = moment(this.date).date(1).weekday(); // 获取当月1日为星期几
      console.log(this.currentWeekday);
      this.lastMonthDays = moment(this.date).subtract(1, 'month').daysInMonth(); // 获取上月天数
      console.log(this.lastMonthDays);
      this.currentMonthDays = moment(this.date).daysInMonth(); // 获取当月天数
      console.log(this.currentMonthDays);
      //总天数是31,1号是周五或者周六6个[]
        //总天数是30,1号是周六6个[]
      if((this.currentMonthDays == '31' && this.currentWeekday == '5' || this.currentWeekday == '6' ) || (this.currentMonthDays == '30' && this.currentWeekday == '6')){
          var daysArr = [[], [], [], [], [], []];
        }else{
          var daysArr = [[], [], [], [], []];
        }
      // const getDay = day => (day <= this.lastMonthDays ? day : (day <= (this.lastMonthDays + this.currentMonthDays)) ? day - this.lastMonthDays : day - (this.lastMonthDays + this.currentMonthDays)); // 日期处理       
      const getDay = day => (day <= this.lastMonthDays ? '' : (day <= (this.lastMonthDays + this.currentMonthDays)) ? day - this.lastMonthDays : ''); // 日期处理
      
      for (let i = 0; i < 7; i += 1) {
        let virtualDay = (this.lastMonthDays - this.currentWeekday) + i + 1;
        for (let j = 0; j < daysArr.length; j += 1) {
          daysArr[j][i] = {'day':getDay(virtualDay + (j * 7))};
        }
      }
    console.table(daysArr);
    this.arr = daysArr

      }
    },
    mounted () {
      this.getData()
    }

}

</script>

<style>
*{margin:0;padding:0;  list-style:none }
.choose{
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  display: inline-block;
  background: #429e6c;
  color: #fff;
  border-radius: 50%;
}

#cal {
    width: 99%;
    font-size: 12px;
    margin: 8px 0 0 15px;position: relative;
}

#cal #top {
    height: 40px;
    line-height: 40px;
    background: #429e6c;
    border: 1px solid #429e6c;
    color: #fff;
    padding: 0 10px;
    clear: both;
}
#cal ul#wk {
    margin: 0;
    padding: 0;
    height:50px;
    color: #888;
    font-size: 14px;
    border-left: 1px solid #429e6c;
    border-right: 1px solid #429e6c;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

#cal ul#wk li {
  width: 48px;
}
#cal ul#wk li span {
  color: black;
  font-weight: bold;
}
#cal ul#wk li b {
    font-weight: normal;
    color: #429e6c;
}
#cal #bm {
    text-align: right;
    height: 30px;
    line-height: 30px;
    padding: 0 13px 0 0;
    border-bottom:1px solid #429e6c;
    border-left:1px solid #429e6c;border-right:1px solid #429e6c;
    clear: both;
    padding: 0 10px;
    font-size: 14px;
}
</style>

 这个是只取当前月份:const getDay = day => (day <= this.lastMonthDays ? '' : (day <= (this.lastMonthDays + this.currentMonthDays)) ? day - this.lastMonthDays : ''); // 日期处理

效果如图

也可以取上个月和下个月的值:

const getDay = day => (day <= this.lastMonthDays ? day : (day <= (this.lastMonthDays + this.currentMonthDays)) ? day - this.lastMonthDays : day - (this.lastMonthDays + this.currentMonthDays)); // 日期处理
如图
注:但是呢这个还没有完善好,当前天的选中会和上个月和下个月的日期重合,比如当前日期是6月29,就会选中两个呢,需要的小伙伴可以自己完善一下


转载于:https://www.cnblogs.com/yhhBKY/p/10219755.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值