Js如何获取某一天所在的星期?

时间: 2019-09-10阅读: 224标签: 日期

我们会遇到的需求的是,获取今天或者某一天所在星期的开始和结束日期。

我们这里来获取今天所在星期的始末日期,我们可以通过(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;
}

来自:https://www.xiabingbao.com/post/javascript/week-start-end.html

吐血推荐

1.站长广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入...

2.休闲娱乐: 直播/交友    优惠券领取   网页游戏   H5游戏

链接: http://www.fly63.com/article/detial/5247

Safari Date() 函数对日期时间字符串(yyyy-MM-dd HH:mm:ss) 提示NaN的问题

今天发现一个奇怪的问题,在iPhone使用 safari 选择定时发布文章到OSC,选择时间后提示不是合法的时间,判断时间的代码如下:在Chrome下会输出 pass,在Safari会输出 isNaN,根据 ECMAScript 5 ISO-8601 format support: 的说法

moment、dayjs、date-fns时间日期库比较

moment、dayjs、date-fns三个库都能满足常见的需求,但是存在如下特点:moment 的功能强大但是体积也最大,moment.min.js 的体积为51K,dayjs.min.js 体积为7K,date-fns由于是模块化加载,体积可以最小化;

前端的各种日期操作

虽然现在处理日期方面已经有了很成熟的也很好用的库,例如(momentjs和date-fns),但是在实际开发中,我们有时候可能并不需要整个库。所以我就在下面整理了在前端开发时对日期时间的各种操作,也算是比较全的了

javascript如何计算两个日期的时间差?

JavaScript可以使用getTime()方法返回两个日期的格林威治时间数值,将此数值相减即可的到两个日期之间的毫秒数,通过两个时间差的毫秒数即可得到相差的时间。

javascript怎么获取当前日期?

JavaScript中可以使用Date对象中的方法来获取当前日期。使用var myDate=new Date()创建date对象,然后使用toLocaleDateString()方法获取当前日期。

JavaScript将毫秒转换为日期格式?

给定一串毫秒数,如何使用JavaScript将它们转换为日期格式?下面本篇文章就来给大家介绍一下使用JavaScript将毫秒转换为日期格式的方法,希望对大家有所帮助。

js获取一段时间内的间隔日期

js获取指定时间范围内指定间隔天数的所有日期,前端js,已知开始时间a、结束时间b和间隔天数c,要求取在a-b这两个时间范围内、间隔c天的所有日期。

ElementUI日期选择器时间选择范围限制

ElementUI是饿了么推出的一套基于vue2.x的一个ui框架。官方文档也很详细,这里做一个element-ui日期插件的补充。官方文档中使用picker-options属性来限制可选择的日期,这里举例子稍做补充。

javascript怎么根据日期判断星期几?

javascript根据日期判断星期几主要用到的方法是:getDay() ,可返回表示星期的某一天的数字。然后根据此数字就可以输出星期几。

js中Date的构造函数解读

javascript中的内置对象是我们经常会用到的,那么今天我们就来说说Date的四种构造方法吧,new Date()这是我们最常使用也最熟悉不过的Date对象的构造方法了,通过无参数的构造函数我们可以默认获取到一个代表实例化时的Date对象

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全