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分页代码(当前页码居中)
Sep 20 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
JavaScript设计模式之单例模式实例
Sep 24 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
js实现的订阅发布者模式简单示例
Mar 14 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 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
自动跳转中英文页面
2006/10/09 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
2014/09/22 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
PHP实现的简单日历类
2014/11/29 PHP
微信支付开发动态链接Native支付
2016/07/12 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
layui表格数据重载
2019/07/27 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
Python序列化基础知识(json/pickle)
2017/10/19 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python字符串查找函数的用法详解
2019/07/08 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
幼儿园门卫制度
2014/01/29 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
简单租房协议书
2014/10/21 职场文书
2014年技术员工作总结
2014/11/18 职场文书
好好学习保证书
2015/02/26 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
活着观后感
2015/06/03 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技