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 相关文章推荐
理解Javascript_01_理解内存分配原理分析
Oct 11 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
jQuery监听文件上传实现进度条效果的方法
Oct 16 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
React Native模块之Permissions权限申请的实例相机
Sep 28 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
js实现前面自动补全位数的方法
Oct 10 Javascript
Vue.js 中的实用工具方法【推荐】
Jul 04 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
基于Vue的侧边目录组件的实现
Feb 05 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 可阅读随机字符串代码
2010/05/26 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
python中readline判断文件读取结束的方法
2014/11/08 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
Saks Fifth Avenue澳洲/亚太地区:萨克斯第五大道精品百货店
2019/06/09 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
网络编辑职责
2014/03/01 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
村干部培训班主持词
2014/03/28 职场文书
元旦晚会活动总结
2014/07/09 职场文书
大学生党员自我评价
2015/03/04 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
新娘婚礼致辞
2015/07/27 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书