我们会遇到的需求的是,获取今天或者某一天所在星期的开始和结束日期。

我们这里来获取今天所在星期的始末日期,我们可以通过(new Date).getDay()来获取今天是星期几,然后再通过这个减去或者加上一定的天数,就是这个星期的开始日期和结束日期。

先看下getDay怎么用

getday()方法:

语法

dateObject.getDay()

返回值

dateObject 所指的星期中的某一天,使用本地时间。返回值是 0(周日) 到 6(周六) 之间的一个整数。

一周的时间是固定的,总共七天,写一个数组,根据getDat()返回的数字去找他的下标就可以了。

那如何得到某一天所在星期的开始和结束日期?

function getWeekStartAndEnd() {const oneDayTime = 1000 * 60 * 60 * 24; // 一天里一共的毫秒数const today = new Date();const todayDay = today.getDay(); // 获取今天是星期几,假设是周3const startDate = new Date(today.getTime() - oneDayTime * (todayDay - 1));const endDate = new Date(today.getTime() + oneDayTime * (7 - todayDay));return { startDate, endDate };
}
const week = getWeekStartAndEnd();
console.log(week.startDate, week.endDate);

是不是很完美?但,这里有一个很大的 bug!注意:如果今天是周日,那么todayDay就会是 0,若还是按照上面的思路,则星期一的日期会变成下周一的日期,星期日的日期会变成下周日的日期。因此,这里我们需要特殊处理下,当 todayDay 为 0 时,就将其赋值为 7。同时,我们还可以传入一个时间戳,获取特定某一天所在的星期。

最终的解决方案

function getWeekStartAndEnd(timestamp) {const oneDayTime = 1000 * 60 * 60 * 24; // 一天里一共的毫秒数const today = timestamp ? new Date(timestamp) : new Date();const todayDay = today.getDay() || 7; // 若那一天是周末时,则强制赋值为7const startDate = new Date(today.getTime() - oneDayTime * (todayDay - 1));const endDate = new Date(today.getTime() + oneDayTime * (7 - todayDay));return { startDate, endDate };
}

扩展

如果我要输出今天所在星期,这一周里所有的日期,该怎么办呢?很简单,先获取到这一周里的第一天,然后第一天加上oneDayTime*i的时间戳,就是第 i 天的日期,或者在前一天的基础上加上 oneDayTime 也可以。

function getAllWeekToday() {const oneDayTime = 1000 * 60 * 60 * 24;const today = new Date();const todayDay = today.getDay() || 7; // 若那一天是周末时,则强制赋值为7const startDate = new Date(today.getTime() - oneDayTime * (todayDay - 1));let dateList = [startDate];for (let i = 1; i < 7; i++) {dateList.push(new Date(startDate.getTime() + oneDayTime * i));}return dateList;
}

【js】判断某一天是星期几相关推荐

  1. JS判断日期是否在同一个星期内,和同一个月内

    今天要用到判断日期是否在同一个星期内和是否在同一个月内,在网上找了好一会儿也没找到合适的,然后自己写了一个方法来处理这个问题,思路就不详细介绍了,直接附上代码,自己测试了一下 没有问题,若有问题请在评 ...

  2. js处理时间戳为各种格式/js判断公历/农历/周历节日和节气

    js获取时间 var date = new Date(); date.getYear();//获取当前年份距离1900年的年份 date.getFullYear();//获取当前年份 //date.g ...

  3. js 判断js,css是否引入,确保不重复引入

    js 判断js,css是否引入,确保不重复引入 (2009-10-31 21:33:44) 转载▼ 标签: 杂谈 分类: js 基本原理: function loadjscssfile(filenam ...

  4. js判断手机浏览器屏幕方向

    /* js判断手机浏览器屏幕方向*/var direction = {__getOrientation: function () {if (window.orientation == 0 || win ...

  5. js的时间 java怎么处理,JS实现处理时间,年月日,星期的公共方法示例

    本文实例讲述了JS实现处理时间,年月日,星期的公共方法.分享给大家供大家参考,具体如下: 在项目中用到的,用js 来得到年月日,星期,当前多少个周的函数,备忘在这里,以后参考. Date.protot ...

  6. PHP和js判断访问设备是否是微信浏览器实例

    PHP和js判断访问设备是否是微信浏览器实例,代码非常精简,适合新手学习. js判断是否是微信浏览器: function is_weixin() { var ua = window.navigator ...

  7. js判断是否包含指定字符串

    CreateTime--2017年2月28日09:37:06 Author:Marydon js判断是否包含指定字符串 var inputValue = "thunder://piaohua ...

  8. js 判断字符串是否包含某字符串

    2019独角兽企业重金招聘Python工程师标准>>> js 判断字符串是否包含某字符串,String对象中查找子字符,indexOf var Cts = "bblText ...

  9. 移动端IOS和androi及浏览器js判断[转载]

    转载自:http://www.niutifa.com/?p=561 移动端IOS和androi及浏览器js判断: <script type="text/javascript" ...

  10. 最短JS判断是否为IE6(IE的写法)

    常用的 JavaScript 检测浏览器为 IE 是哪个版本的代码,包括是否是最人极端厌恶的 ie6 识别与检测. var isIE=!!window.ActiveXObject; var isIE6 ...

最新文章

  1. 竟有内鬼!北理工硕士生「复制粘贴」论文,旷视研究员最新声明
  2. Head First Python-Python中与文件相关的操作-读、处理、写
  3. 区块链与分享型数据库
  4. java爬虫防屏蔽_Java爬虫技术之绕过百度云防护抓取网站内容
  5. 机器学习:维度灾难(Curse of Dimensionality)
  6. 修改windows默认远程管理端口
  7. java随机数Reandom(简单介绍)
  8. linux 正向代理与反向代理
  9. 485.最大连续1的个数
  10. 代码格式化工具 Clang-format
  11. 软件工程导论复习知识点
  12. 金山电脑公司总经理雷军(转载)
  13. hbase版本与Hadoop版本支持关系(官方)
  14. 类似于talkingdata的灵动功能的实现
  15. ps2022 - ps to dxf
  16. 网络安全新晋网红“零信任”
  17. idea显示Multiple Spring Boot run configurations were detected. Services allows to manage multiple
  18. Apereo CAS 5.0.X 配置数据库认证方式
  19. UG476 GT Transceivers文档翻译和自身理解
  20. .net6API使用AutoMapper和DTO

热门文章

  1. 部署到线上的网页,提示网页不安全的解决办法
  2. python多线程库_python多线程库
  3. (上)基于提升HOG特征的自动多斑马鱼跟踪 Automatic multiple zebrafish tracking based on improved HOG features
  4. CVPR 2020代码开源的论文最全合集
  5. c#开发Windows服务程序指南
  6. android布局分析工具
  7. 8.7 存储容量的计算
  8. 买学生台灯应该怎么选择?学生护眼台灯推荐
  9. php rabbitmq非阻塞,Python-RabbitMQ-RPC(非阻塞版)
  10. 西南民族大学计算机考研分数线,西南民族大学2019年考研复试分数线已公布