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 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
js封装的textarea操作方法集合(兼容很好)
Nov 16 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
Nov 25 Javascript
JavaScript实现的日期控件具体代码
Nov 18 Javascript
jquery实现弹出层完美居中效果
Mar 03 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
Vue 自定义指令功能完整实例
Sep 17 Javascript
vue中实现图片压缩 file文件的方法
May 28 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
DIY实用性框形天线
2021/03/02 无线电
利用php_imagick实现复古效果的方法
2016/10/18 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
2017/02/18 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python抽取指定url页面的title方法
2018/05/11 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python实现代码统计器
2019/09/19 Python
Python基于locals返回作用域字典
2020/10/17 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
村级个人对照检查材料
2014/08/22 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
2015暑假假期总结
2015/07/13 职场文书
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
python操作xlsx格式文件并读取
2021/06/02 Python
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python
Nginx速查手册及常见问题
2022/04/07 Servers