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 photoFrame 图片边框美化显示插件
Jun 28 Javascript
深入理解Javascript闭包 新手版
Dec 28 Javascript
什么是Node.js?Node.js详细介绍
Jun 01 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
Node.js使用cookie保持登录的方法
May 11 Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
React实现全局组件的Toast轻提示效果
Sep 21 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
Dec 09 Javascript
微信小程序实现拍照画布指定区域生成图片
Jul 18 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 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 批量生成html,txt文件的实现代码
2013/06/26 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
浅谈js中变量初始化
2015/02/03 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
js模糊查询实例分享
2016/12/26 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python简单贪吃蛇开发
2019/01/28 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
小学生防溺水广播稿
2014/01/12 职场文书
2014年司法所工作总结
2014/11/22 职场文书
校园广播稿范文
2015/08/19 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers