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 相关文章推荐
iframe窗口高度自适应的又一个巧妙实现思路
Apr 04 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
JS实现求5的阶乘示例
Jan 21 Javascript
Vue使用watch监听一个对象中的属性的实现方法
May 10 Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
JavaScript实现密码强度实时验证
Mar 18 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php中file_get_contents与curl性能比较分析
2014/11/08 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP7新功能总结
2019/04/14 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
2012/10/11 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
Vue.use源码分析
2017/04/22 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python决策树分类算法学习
2017/12/22 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
大学生毕业自我鉴定
2013/11/06 职场文书
一封普通求职者的求职信
2013/11/20 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
会议室标语
2014/06/21 职场文书
感恩节寄语2015
2015/03/24 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python