方法一

首先我们通过获取今天时间来确认日期和周几,此时会出现三种情况:

1.当前周一;

2.当前周日;

3.当前是周二到周五任意一天;

也就是明确知道的是今天的日期以及今天周几,通过new Date()来获取时间

需要两个数组来存放每天的名称和日期,也可以一开始创建一个数组对象[{week:'',time:''}],根据个人喜好不多说上代码

const days = ref([''])// 存放一周日期
const week = ref();// 存放当天周几
const weeks = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']const generateDateModel = () => {
// 当前时间
const myDate = new Date();
// 年份
const year = myDate.getFullYear();
// 月份
const month = myDate.getMonth()+1;
// 今天周几,number
week.value = myDate.getDay();// 今天日期,number
const day = myDate.getDate();// 存放今天到周日的天数
const futureArr = ref()// 本周已过天数
const pastArr = ref()// 把今天周几转换成string
week.value = weeks[week.value];for(let i = 0;i < weeks.length;i+=1){
//判断今天是不是周二到周六中的一天if(week.value !== weeks[0] && week.value !== weeks[6]){
// 找到今天索引const index = weeks.indexOf(week.value);
// 今天的日期days.value[index-1] = `${year}/${month}/${day}`
// 今天到周日的天数const future = 7 - index
// 本周已过天数const past = index - 1
// 获取本周剩余日期for (let j = future; j > 0 ; j -= 1){ days.value[index + j - 1] = `${year}/${month}/${day+j}`}
// 获取本周已过日期for (let j = 0; j < past; j += 1){ days.value[j] = `${year}/${month}/${day-j-1}`}
// 如果今天是周一获取本周日期if(week.value === weeks[0]){ for(let j = 1; j < 7; j += 1){days.value[i] = `${year}/${month}/${day+i}`}}
// 如果今天是周日过去七天日期if(week.value === weeks[6]){ for(let j = 7; j > 0; j -= 1){days.value[i] = `${year}/${month}/${day-i}`}}}
}generateDateModel();

以上代码可以实现当前周七天的日期,但是代码过于冗余,而且还有一个问题就是没有顺序,不推荐

方法二

当知道当前日期,我们是可以直接推断出周一或者周日的,因此可以直接用今天的日期减去相应天数,得到周一或周日并且顺序依次排列,代码如下:

const days = ref([''])
const week = ref();
const weeks = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']const generateDateModel = () => {const myDate = new Date();const year = myDate.getFullYear();const month = myDate.getMonth() + 1;week.value = myDate.getDay() - 1;// 此方法查询出来的是当前周几的数字,比如周一就是1let day = myDate.getDate();week.value = weeks[week.value];if(week.value === weeks[0]){ // 如果今天是周一获取本周日期for(let j = 0; j < 7; j += 1){days.value[j] = `${year}/${month}/${day + j}`}}else{const index = weeks.indexOf(week.value); // 找到今天索引day -= index ; // 周一for(let j = 0; j < 7; j += 1){days.value[j] = `${year}/${month}/${day + j}`}}
}generateDateModel();

此方法可以实现最近一周的时间,当前时间如果是本月最后或者第一天会出现问题。

方法二改进

首先根据周一往后排思路是正确的,但是通过数值简单加减会出现在月初和月末减到负值或加到31以上,因此需要先转成时间戳,通过时间戳减去一天的86400000,先得到今天的索引通过索引来进行加减,代码如下

有更好的方法可以推荐给我

const days = ref([''])
const week = ref();
const day = ref();
const weeks = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日']const generateDateModel = () => {const myDate = new Date();const year = myDate.getFullYear();const month = myDate.getMonth()+1;week.value = myDate.getDay()-1;day.value = myDate.getDate();week.value = week.value === -1 ? weeks[6] : weeks[week.value];
if(week.value === weeks[0]){ // 如果今天是周一获取本周日期days.value[0] = `${year}/${month}/${myDate.getDate()}`for(let j = 1; j < 7; j += 1){const oneDay = new Date(days.value[0]).getTime() + j * 86400000days.value[j] =  `${new Date(oneDay).getFullYear()}/${new Date(oneDay).getMonth() + 1}/${new Date(oneDay).getDate()}`}
}else{const index = weeks.indexOf(week.value); // 找到今天索引const Monday = Date.now() - index * 86400000days.value[0] = `${new Date(Monday).getFullYear()}/${new Date(Monday).getMonth() + 1}/${new Date(Monday).getDate()}`for (let i = 1; i < 7; i+=1) {const oneDay = Monday + i * 86400000days.value[i] =  `${new Date(oneDay).getFullYear()}/${new Date(oneDay).getMonth() + 1}/${new Date(oneDay).getDate()}`}
}}console.log(days.value)generateDateModel();

以下是最中输出结果:

vue获取当前一周日期相关推荐

  1. java中获取当前一周日期和上周下周日期当前周数

    1.获取当前日期所在周的所有日期  public static List<Date> dateToCurrentWeek(Date myDate) {Calendar cal = Cale ...

  2. java当前日期,获取当前日期及当前所在一周日期

    1.先获取当前日期:var currDT; var aryDay = new Array("日", "一", "二", "三&qu ...

  3. python代码根据当前时间获取下一周的日期

    python代码根据当前时间获取下一周的日期 #使用python代码根据当前日期计算下一周的日期范围 import datetime,calendar import pandas as pddef g ...

  4. php 获取上周日期_php 获取上一周下一周的日期列表

    /** * 获取某天的一周日期 * @date 2021-01-08 * @version 1.0 * @param string $time [日期] * @param string $format ...

  5. php中如何获得当前周数,PHP中根据输入的周数获取到该周的日期范围

    /** * 根据输入的周数获取到该周的日期范围[推荐使用] * 从周一到周日算是一周 * * @author _DT_Baby * @param int $year 年份 * @param int $ ...

  6. ios 根据日期知道周几_iOS 获取当前日期是周几

    获取当前日期月份的第一天/最后一天日期 获取当前日期是周几 //获取日期date对应月的第一天日期 + (NSString *)getMonthFirstDayWithDate:(NSDate *)d ...

  7. 获取下一个周几的日期

    获取下一个周几的日期 直接上代码: Integer day = null; //初始化,值为1~7,分别代表周一~周日 LocalDate weekDate = LocalDate.now().wit ...

  8. Java 周日期计算工具,获取当前第几周,按周数获取周一至周日,按日期获取周一至周日

    记一个自己写的工具类: 1.按时间获取当前第几周 getzs 3.按日期获取周一至周日getgetBetweenDates2 4.按年份跟周数获取周一至周日 getgetBetweenDates3 结 ...

  9. java获取当前日期所在周的周六、周日日期

    /*** 获取当前日期所在周的周六日期* @return String 格式 yyyy-MM-dd*/ public static String getSaturdayDate() {SimpleDa ...

最新文章

  1. .net 4.0下载
  2. [转]gitHub客户端Desktop的安装使用总结 ---基础篇
  3. linux重装系统后 70-persistent-net.rules 不能删除解决
  4. 活用内核链表解决约瑟夫斯问题
  5. 单例模式及C++实现代码
  6. Oracle Study之--Oracle等待事件(5)
  7. 陈华钧 | 知识图谱构建,将成为智能金融的突破口
  8. C++中派生类隐式调用与显式调用基类的构造函数
  9. python怎么启动mne_mne-python学习之一 入门介绍
  10. Python开发基础 day7 迭代器
  11. requirejs 入门【链接】
  12. python内置函数__init__及__str__的区别
  13. 基于蚁群算法求解求解TSP问题(JAVA)
  14. QT模拟鼠标自动点击:1-鼠标移动自动显示坐标
  15. iOS 模拟器下载与安装
  16. 雷云Razer Synapse2.0使用测评 -第二次作业
  17. VLIW Microprocessor Hardware Design
  18. 【面试题】能从底层角度聊聊volatile关键字的原理吗?
  19. 斐波那契数列112358c语言编程,c语言中的斐波那契数列
  20. 中国古代木制机器发展简史

热门文章

  1. [附源码]计算机毕业设计JAVA学生互评的在线作业管理系统
  2. 在线培训系统搭建,简单成熟的部署方式,助力企业拥有培训平台
  3. 荣耀10 无法从服务器获取信息,荣耀10最新资讯
  4. 文件系统(Windows)
  5. 推荐系统遇上深度学习(九十二)-[腾讯]RecSys2020最佳长论文-多任务学习模型PLE
  6. 编译器光标变成黑块变粗 影响插入 修改 的解决方法
  7. 使用阿里云短信推送服务发送验证码
  8. 思特沃克(ThoughtWorks) 外企面试题 面试经验分析 面试题 软件测试工程师 测试面试题分享 测试需求理解和用例设计编写 SeleniumUI自动化测试 接口测试 性能测试 实战之战损版
  9. 快来个大佬指点一下,求求了。
  10. mysql 远程 2003错误_MySQL远程连接失败(错误码:2003)