获取当前月日历

<template>
<div id="calendar">
<div class="top">{{date}}</div>
<ul>
<li><b>日</b></li>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
<li><b>六</b></li>
</ul>
<ul v-for="item in arr" :key="item.id">
<li><span :class="item[0].day == date.substring(8) && item[0].month == '当月'? 'choose' :''" :style="!Object.is(item[0].month,'当月') ? 'color:#cecece;' : ''">{{item[0].day}}</span>&nbsp;</li>
<li><span :class="item[1].day == date.substring(8) && item[1].month == '当月'? 'choose' :''" :style="!Object.is(item[1].month,'当月') ? 'color:#cecece;' : ''">{{item[1].day}}</span>&nbsp;</li>
<li><span :class="item[2].day == date.substring(8) && item[2].month == '当月'? 'choose' :''" :style="!Object.is(item[2].month,'当月') ? 'color:#cecece;' : ''">{{item[2].day}}</span>&nbsp;</li>
<li><span :class="item[3].day == date.substring(8) && item[3].month == '当月'? 'choose' :''" :style="!Object.is(item[3].month,'当月') ? 'color:#cecece;' : ''">{{item[3].day}}</span>&nbsp;</li>
<li><span :class="item[4].day == date.substring(8) && item[4].month == '当月'? 'choose' :''" :style="!Object.is(item[4].month,'当月') ? 'color:#cecece;' : ''">{{item[4].day}}</span>&nbsp;</li>
<li><span :class="item[5].day == date.substring(8) && item[5].month == '当月'? 'choose' :''" :style="!Object.is(item[5].month,'当月') ? 'color:#cecece;' : ''">{{item[5].day}}</span>&nbsp;</li>
<li><span :class="item[6].day == date.substring(8) && item[6].month == '当月' ? 'choose' :''" :style="!Object.is(item[6].month,'当月') ? 'color:#cecece;' : ''">{{item[6].day}}</span>&nbsp;</li>
</ul>
</div>
</template>
<script>
import moment from 'moment'
export default {
data () {
return {
currentMonthDays:'',
currentWeekday:'',
lastMonthDays:'',
date:moment().format('YYYY-MM-DD'),
arr:[],
}
},
methods: {
getData(){
this.currentWeekday = moment(this.date).date(1).weekday(); // 获取当月1号为星期几
this.lastMonthDays = moment(this.date).subtract(1, 'month').daysInMonth(); // 获取上月天数
this.currentMonthDays = moment(this.date).daysInMonth(); // 获取当月天数
//一个月总天数是31,1号是周五或者周六 => 6个[]
//一个月总天数是30,1号是周六 => 6个[]
    var daysArr = []
if((this.currentMonthDays == '31' && this.currentWeekday == '5' || this.currentWeekday == '6' ) || (this.currentMonthDays == '30' && this.currentWeekday == '6')){
daysArr = [[], [], [], [], [], []];
}else{
daysArr = [[], [], [], [], []];
}
//当day小于等于上月天数取day,
//当day小于等于上月天数 + 当月天数则取 day-上月天数
//当day大于上月天数 + 当月天数则取 day - (上月天数 + 当月天数)
//展示上个月这个月下个月的日历
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 : ''); // 日期处理
//当mon小于等于上月天数该日期属于上个月,
//当day小于等于上月天数 + 当月天数则该日期属于这个月
//当day大于上月天数 + 当月天数则该日期属于下个月
const getMonth = mon => (mon <= this.lastMonthDays ? '上月' : mon <= (this.lastMonthDays + this.currentMonthDays) ? '当月' : '下月') 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)),'month':getMonth(virtualDay + (j * 7))};
}
}
console.table(daysArr);
this.arr = daysArr }
},
mounted () {
this.getData()
} }
</script>
<style scoped >
*{margin:0;padding:0; list-style:none }
.choose{
width: 30px;
height: 30px;
line-height: 30px;
text-align: center;
display: inline-block;
background: #2196f3;
color: #fff !important;
border-radius: 50%;
}
#calendar {
width: 400px;
font-size: 12px;
margin: 50px auto;
border-bottom: 1px solid #2196f3;
} #calendar .top {
height: 40px;
line-height: 40px;
background: #2196f3;
border: 1px solid #2196f3;
color: #fff;
padding: 0 10px;
clear: both;
}
#calendar ul {
margin: 0;
padding: 0;
height:50px;
color: #888;
font-size: 14px;
border-left: 1px solid #2196f3;
border-right: 1px solid #2196f3;
display: flex;
align-items: center;
justify-content: space-between;
} #calendar ul li {
width: 48px;
}
#calendar ul li span {
color: black;
font-weight: bold;
}
#calendar ul li b {
font-weight: normal;
color: #0781e2;
}
</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)); // 日期处理


												

moment 获取当前月日历的更多相关文章

  1. android datepicker monthOfYear getMonth(): 获取当前月(注意:返回数值为0..11,需要自己+1来显示).....

    关键点: 1. getMonth():     获取当前月(注意:返回数值为0..11,需要自己+1来显示) 2. 初始年(译者注:注意使用new Date()初始化年时,需要+1900,如下:dat ...

  2. java获取当前月第一天和最后一天

    获取当前月第一天: /** * 获取当前月第一天 * @param month * @return */ public static String getFirstDayOfMonth(int mon ...

  3. Date小技巧:set相关操作及应用_获取当前月(季度/年)的最后一天

    set操作还是有不少的,具体见 http://www.w3school.com.cn/jsref/jsref_obj_date.asp, 今天我就只说 setFullYear, setMonth, s ...

  4. C# 获取当前月第一天和最后一天 计算两个日期差多少天

    获取当前月的第一天和最后一天 DateTime now = DateTime.Now; DateTime firstDay = ); DateTime lastDay = firstDay.AddMo ...

  5. C# 获取当前月第一天和最后一天

    废话不多说,直接上代码 //先获取当前时间 DateTime now = DateTime.Now; //获取当前月的第一天 DateTime d1 = new DateTime(now.Year, ...

  6. java获取当前月第一天和最后一天,上个月第一天和最后一天

    package com.test.packager; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...

  7. laravel 获取当前月,当前星期,当天起始时间方法

    获取当前月起始时间: 1. $time=time(); $start=date('Y-m-01',$time);//获取指定月份的第一天 $end=date('Y-m-t',$time); //获取指 ...

  8. php获取当前月月初至月末的时间戳,上个月月初至月末的时间戳

    当前月 <?php $thismonth = date('m'); $thisyear = date('Y'); $startDay = $thisyear . '-' . $thismonth ...

  9. 【HANA系列】SAP HANA SQL获取当前月的第一天

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取当前 ...

随机推荐

  1. 在jeecg中如何配置多对一和多对多的关系

    多对多: mappedBy指的是当前的类对应的表, cascade属性的可能值有 all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作. ...

  2. adis16405 配置

  3. Kali Linux 2018 更新源配置

    查看添加更新源 编辑sources.list,将kali更新源加入其中 sudo vim /etc/apt/sources.list 国内更新源 #阿里云 deb http://mirrors.ali ...

  4. 高级UI晋升之View渲染机制(二)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 优化性能一般从渲染,运算与内存,电量三个方面进行,今天开始说聊一聊Android ...

  5. 牛客网多校训练第八场A All one Matrix

    题目链接:https://ac.nowcoder.com/acm/contest/888/A 题意:求出有多少个不被包含的全1子矩阵 解题思路:首先对列做处理,维护每个位置向上1的个数,然后我们从最后 ...

  6. 令人清爽的异步函数async、await

    1.什么是async.await? async用于声明一个函数是异步的.而await从字面意思上是"等待"的意思,就是用于等待异步完成.并且await只能在async函数中使用; ...

  7. 如何将sql查询出的列名用注释代替?

    如何将sql查询出的列名用注释代替? 大家正常的工作的时候,会有这样的要求,客户想要看下原始数据,但是呢.前台导出又麻烦,这时候只能从数据库拷贝出来一份.但是呢,数据库里面的字段客户又看不明白,只能用 ...

  8. Mysql ibd恢复

    一,binlog恢复,这里就不说了. 二,ibd方式其实很简单, 生成数据结构(有的可以跳过) 1,创建一个新库 2,新库里新建一个表,名字和回复的表一样. 字段数量一样(字段类型和名字都无所谓) 3 ...

  9. 论文学习——《Good View Hunting: Learning Photo Composition from Dense View Pairs》

    论文链接:http://www.zijunwei.org/papers/cvpr18-photo-composition.pdf 代码及数据集链接:https://www3.cs.stonybrook ...

  10. python学习笔记(十)——正则表达式和re模块

    #正则表达式和re模块 # match(pattern, string,[flag]) #在字符串开始时进行匹配 # pattern 正则表达式 # string 要匹配的字符串 # [flag] 可 ...