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 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
Mar 03 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
JavaScript+canvas实现七色板效果实例
Feb 18 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
ES6知识点整理之Proxy的应用实例详解
Apr 16 Javascript
百度小程序自定义通用toast组件
Jul 17 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的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
JS Date函数整理方便使用
2013/10/23 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
python获取中文字符串长度的方法
2018/11/14 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python障碍式期权定价公式
2019/07/19 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
Python3 读取Word文件方式
2020/02/13 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
容易被忽略的Python内置类型
2020/09/03 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
临床医师专业个人自我评价范文
2013/11/07 职场文书
村官学习十八大感想
2014/01/15 职场文书
大专学生求职信
2014/07/04 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
检讨书格式范文
2015/05/07 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
Go 内联优化让程序员爱不释手
2022/06/21 Golang