vue 根据选择的月份动态展示日期对应的星期几


Posted in Vue.js onFebruary 06, 2021

我等卑微的码农,依旧还得唱着“你我皆凡人,生在人世间,终日奔波苦,一刻不得闲,既然不是仙,难免有杂念,烦恼放两旁,工资摆中间,多少男子汉,秃顶又肥胖,加班的日夜,没有买保险”。

虽一直反抗,却从未奏效。大老板们是梦想照进现实,我等是梦想撞见黑锅!

牢骚了那么多,锅还得背,班还得加,code还得继续码!!!

来,把标题中所提到的这个效果给实现一下吧。

原理其实很简单,先得有一个选择年月的输入框吧,这里我用的是Element的DatePicker日期选择器组件,具体使用方法不多说,自己去看Element的API吧。

vue 根据选择的月份动态展示日期对应的星期几

然后就是根据选择的月份来动态显示当前月份的每一天了,这里用到了日期对象的两个方法:setMonth和setDate。

其中,setMonth(month, day) 方法用于设置月份,参数介绍如下:
month:必需。一个表示月份的数值,该值介于 0(一月) ~ 11(十二月) 之间。
day:可选。一个表示月的某一天的数值,该值介于 1 ~ 31 之间(以本地时间计)。在 EMCAScript 标准化之前,不支持该参数。

setDate(day) 方法用于设置一个月的某一天,参数介绍如下:
day:必需。表示一个月中的一天的一个数值(1 ~ 31)。

具体代码如下:

<template>
 <div>
  <el-date-picker v-model="month" type="month" @change="monthChange" placeholder="选择月" />
  <p>
   当月的每一天:
   <span v-for="item in everyDay" :key="item" style="margin-right:10px;">{{item}}</span>
  </p>
 </div>
</template>

<script>
export default {
 data() {
  return {
   month: "",
   everyDay: []
  };
 },
 mounted(){
  let date = new Date(), month = date.getMonth();
  this.getEveryDay(date, month);
 },
 methods: {
  monthChange(date) {
   this.getEveryDay(date, date.getMonth());
  },
  getEveryDay(date, month) {
   //设置月份
   date.setMonth(month + 1);
   //设置一个月的某一天-这里设置为零则取到的日期中的天就会是当月的最后一天(比如,二月份就是28或29,其他月份就是30或31),方便下边的循环
   date.setDate(0);
   let dayArry = [];
   //获取月份的某一天
   let day = date.getDate();

   for (let i = 1; i <= day; i++) {
    date.setDate(i);  //如果只获取当前选择月份的每一天,则不需要date.setDate(i)只需dayArry.push(i)即可,其中date.setDate(i)是设置当前月份的每一天
    dayArry.push(i + ' ' + this.getWeekday(date.getDay()));  //选中月份的每一天和当天是星期几
   }

   this.everyDay = dayArry;
  },
  getWeekday(day){
   return ["周日", "周一", "周二", "周三", "周四", "周五", "周六"][day];
  },
 }
};
</script>

展示效果如下:

vue 根据选择的月份动态展示日期对应的星期几

注意,由于getMonth方法返回的值是从0开始的,所以如果要想获得正确的月份,需要在返回的值的基础上加1。而setDate这里有一点特殊,需要详细说明一下,setDate用于设置一个月的某一天,比如setDate(1)就是设置一个月的第一天,setDate(10)就是设置一个月的第十天。而由于众所周知的原因,月份可能会有28天或29天或30天或31天,如果让我们自己去写代码判断,又太过于繁琐,此时setDate(0)的牛逼之处就显示出来了(官方给出的setDate的参数介于1-31之间,将0给无情地抛弃了,零兄此时悲伤的高歌:无情的世界无情的你,你把老子当成手中的垃圾),setDate(0)设置的是一个月的最后一天,甭管这一天是28还是29,亦或是30或31(零兄此时高喊:以前你对我爱答不理,现在让你高攀不起!),之后再通过getDate方法来获取我们已经设置好的一个月份的最后一天,最后来上一个for循环,将每一天给塞进一个数组中,就可以打完收工!

当然,我们还可以不展示每一天对应的是星期几,只将每周的周六周日所对应的那两天给标红展示,代码只是做了一点小修改:

<template>
 <div style="margin:50px;">
  <el-date-picker v-model="month" type="month" @change="monthChange" placeholder="选择月" />
  <p style="margin-top:10px;">
   当月的每一天:
   <span v-for="item in everyDay" :key="item" style="margin-right:10px;" v-html="item"></span>
  </p>
 </div>
</template>

<script>
export default {
 data() {
  return {
   month: "",
   everyDay: []
  };
 },
 mounted(){
  let date = new Date(), month = date.getMonth();
  this.getEveryDay(date, month);
 },
 methods: {
  monthChange(date) {
   this.getEveryDay(date, date.getMonth());
  },
  getEveryDay(date, month) {
   //设置月份
   date.setMonth(month + 1);
   //设置一个月的某一天-这里设置为零则取到的日期中的天就会是当月的最后一天(比如,二月份就是28或29,其他月份就是30或31),方便下边的循环
   date.setDate(0);
   let dayArry = [];
   //获取月份的某一天
   let day = date.getDate();

   for (let i = 1; i <= day; i++) {
    date.setDate(i);
    if(date.getDay() == 0 || date.getDay() == 6){
     dayArry.push('<i class="red">' + i + '</i>');
    }else{
     dayArry.push(i);
    }
   }

   this.everyDay = dayArry;
  },
 }
};
</script>
<style>
.red{color:red;font-style:normal;}
</style>

展示效果如下:

vue 根据选择的月份动态展示日期对应的星期几

作者:小坏

出处:http://tnnyang.cnblogs.com

以上就是vue 根据选择的月份动态展示日期对应的星期几的详细内容,更多关于vue 选择月份动态展示日期的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
如何理解Vue简单状态管理之store模式
May 15 Vue.js
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
解决vue项目本地启动时无法携带cookie的问题
Feb 06 #Vue.js
如何封装Vue Element的table表格组件
Feb 06 #Vue.js
Vue实现圆环进度条的示例
Feb 06 #Vue.js
vue浏览器返回监听的具体步骤
Feb 03 #Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 #Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 #Vue.js
Vue常用API、高级API的相关总结
Feb 02 #Vue.js
You might like
农民C键的运用技巧
2020/03/04 星际争霸
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
python实现一组典型数据格式转换
2018/12/15 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
python时间time模块处理大全
2020/10/25 Python
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
垃圾回收的优点和原理
2014/05/16 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
初婚未育证明
2014/01/15 职场文书
办公室主任先进事迹
2014/01/18 职场文书
校园安全广播稿
2014/02/08 职场文书
最新离婚协议书范本
2014/08/19 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python