JavaScript获取某一天所在的星期


Posted in Javascript onSeptember 05, 2019

导语: 如何获取今天或者某一天所在星期的开始和结束日期,或者如何获取整个星期的日期

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

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

function getWeekStartAndEnd() {
  const oneDayTime = 1000 * 60 * 60 * 24; // 一天里一共的毫秒数
  const today = new Date();
  const todayDay = today.getDay(); // 获取今天是星期几,假设是周3
  const 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; // 若那一天是周末时,则强制赋值为7
  const 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; // 若那一天是周末时,则强制赋值为7
  const 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;
}

总结

以上所述是小编给大家介绍的JavaScript获取某一天所在的星期,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
网上抓的一个特效
May 11 Javascript
地震发生中逃生十大法则
May 12 Javascript
js实现飞入星星特效代码
Oct 17 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
vue页面跳转后返回原页面初始位置方法
Feb 11 Javascript
js实现导航跟随效果
Nov 17 Javascript
浅谈express.js框架中间件(middleware)
Apr 07 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
Oct 23 Javascript
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
React四级菜单的实现
Apr 08 Javascript
layui table设置某一行的字体颜色方法
Sep 05 #Javascript
微信小程序HTTP接口请求封装代码实例
Sep 05 #Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 #Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 #Javascript
layui动态加载多表头的实例
Sep 05 #Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 #Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 #Javascript
You might like
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
鼠标经过的文本框textbox变色
2009/05/21 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
js实现无缝轮播图
2020/03/09 Javascript
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python基础教程之自定义函数介绍
2014/08/29 Python
python批量生成本地ip地址的方法
2015/03/23 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
彪马英国官网:PUMA英国
2019/02/11 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
小学音乐教学反思
2014/02/05 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
2014年小学英语教师工作总
2014/12/03 职场文书
学校社团活动总结
2015/05/07 职场文书
敬老院活动感想
2015/08/07 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
使用Apache Camel表达REST服务的方法
2022/06/10 Servers