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 相关文章推荐
才发现的超链接js导致网页中GIF动画停止的解决方法
Nov 02 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
jQuery中parents()方法用法实例
Jan 07 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
vue配置文件实现代理v2版本的方法
Jun 21 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
微信小程序vant弹窗组件的实现方式
Feb 21 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 Javascript
js和jquery判断数据类型的4种方法总结
Aug 28 jQuery
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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
实例Python处理XML文件的方法
2015/08/31 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python整数对象实现原理详解
2019/07/01 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
django ORM之values和annotate使用详解
2020/05/19 Python
美国购车网站:TrueCar
2016/10/19 全球购物
环保建议书100字
2014/05/14 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
党员个人党性分析材料
2014/12/18 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
尊师重教主题班会
2015/08/14 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Python可视化神器pyecharts绘制水球图
2022/07/07 Python
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL