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 相关文章推荐
基于jquery的返回顶部效果(兼容IE6)
Jan 17 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
vuex实现简易计数器
Oct 27 Javascript
JS实现一个简单的日历
Feb 22 Javascript
详解Angular 4.x NgIf 的用法
May 22 Javascript
Vue编写多地区选择组件
Aug 21 Javascript
微信小程序实现日期格式化和倒计时
Nov 01 Javascript
javascript的惯性运动实现代码实例
Sep 07 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
python安装与使用redis的方法
2016/04/19 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python 数据库操作 SQLAlchemy的示例代码
2019/02/18 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
JAVA和C++的区别
2013/10/06 面试题
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
初中班主任评语大全
2014/04/24 职场文书
经典团队口号大全
2014/06/21 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
装修安全责任协议书
2016/03/22 职场文书
vscode内网访问服务器的方法
2022/06/28 Servers