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 相关文章推荐
JS+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
JS修改css样式style浅谈
May 06 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
Nov 02 Javascript
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
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
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
Bootstrap实现的表格合并单元格示例
2018/02/06 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
如何真正的了解python装饰器
2020/08/14 Python
爱心倡议书范文
2014/05/12 职场文书
管理建议书范文
2014/05/13 职场文书
幼师求职自荐信
2014/05/31 职场文书
英语专业自荐书
2014/06/13 职场文书
体育馆的标语
2014/06/24 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
电力培训学习心得体会
2016/01/11 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
vue使用element-ui按需引入
2022/05/20 Vue.js