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 相关文章推荐
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
css值转换成数值请抛弃parseInt
Oct 24 Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 Javascript
微信分享的标题、缩略图、连接及描述设置方法
Oct 14 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
jQuery插件pagewalkthrough实现引导页效果
Jul 05 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
vue2里面ref的具体使用方法
Oct 27 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
ant design vue的form表单取值方法
Jun 01 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
一个ftp类(ini.php)
2006/10/09 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
php修改时间格式的代码
2011/05/29 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python timeit模块原理及使用方法
2020/10/10 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
如何设置Java的运行环境
2013/04/05 面试题
商场父亲节活动方案
2014/08/27 职场文书
党员批评与自我批评
2014/10/15 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
MySQL时区造成时差问题
2022/04/13 MySQL