js Date()对象的一些时间计算

没什么好解释的应该都能看懂

  // 当前时间年月日时分秒
    function getNow () {
        let date = new Date();
        let Y = date.getFullYear();
        let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
        let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
        let h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
        let m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
        let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
    }
    // 计算当前日期是本月的第几周
    function getMonthWeek () {
        let date = new Date()
        let day = date.getDate()
        let w = date.getDay()
        if (w == 0) {
            w = 7;
        }
        console.log("当前第几周",Math.ceil((day + 6 - w) / 7))
        return Math.ceil((day + 6 - w) / 7)
    }
    // 获取本月有多少周
    function getWeekData(year, month) { //传入  年  月  获取当月有几周 以及日期 
        let date = new Date();
        var new_year = date.getFullYear();;    //取当前的年份
        var new_month = date.getMonth() + 1;//取下一个月的第一天,方便计算(最后一天不固定)
        if(new_month<10){ 
            new_month = '0' + new_month
         }
        var weekDay = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"];
        if (new_month > 12) {
            new_month -= 12;        //月份减     
            new_year++;            //年份增
        }
        var first_date = new Date(new_year, new_month, 1);                //取当年当月中的第一天-时间格式
        var last_Data = (new Date(first_date.getTime() - 1000 * 60 * 60 * 24)).getDate() //获取当月最后一天日期
        //当月第一天是周几
        var firstzhouji = new Date(new_year + '/' + new_month + '/' + 1).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + 1).getDay() - 1]
        //当月最后一天是周几
        var lastzhouji = new Date(new_year + '/' + new_month + '/' + last_Data).getDay() == 0 ? '星期天' : weekDay[new Date(new_year + '/' + new_month + '/' + last_Data).getDay() - 1]
        var firsttime = '' //第一周有几天
        if (firstzhouji == '星期一') { firsttime = 7 }
        if (firstzhouji == '星期二') { firsttime = 6 }
        if (firstzhouji == '星期三') { firsttime = 5 }
        if (firstzhouji == '星期四') { firsttime = 4 }
        if (firstzhouji == '星期五') { firsttime = 3 }
        if (firstzhouji == '星期六') { firsttime = 2 }
        if (firstzhouji == '星期天') { firsttime = 1 }     
        var lasttime = '' //最后一周有几天
        if (lastzhouji == '星期一') { lasttime = 1 }
        if (lastzhouji == '星期二') { lasttime = 2 }
        if (lastzhouji == '星期三') { lasttime = 3 }
        if (lastzhouji == '星期四') { lasttime = 4 }
        if (lastzhouji == '星期五') { lasttime = 5 }
        if (lastzhouji == '星期六') { lasttime = 6 }
        if (lastzhouji == '星期天') { lasttime = 7 }
        // 前后两周  加上 剩余周数  得出总周数
        var contime = 2 + (last_Data - lasttime - firsttime) / 7
        console.log("本月有几周",contime)
        return contime
    }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是如何使用 JavaScript 中的 Date 对象和一些简单的计算来生成历史半年前每周的自然周期开始和结束时间,并计算当前周期在当前年中是第多少周。 首先,我们可以使用 JavaScript 中的 Date 对象来获取当前时间,然后使用一些简单的计算来获取历史半年前每周的自然周期开始和结束时间。具体来说,可以按照以下步骤操作: 1. 获取当前时间时间戳(以毫秒为单位): ``` const now = Date.now(); ``` 2. 计算历史半年前的时间戳: ``` const sixMonthsAgo = now - 180 * 24 * 60 * 60 * 1000; ``` 3. 使用 Date 对象的构造函数来创建历史半年前的日期: ``` const date = new Date(sixMonthsAgo); ``` 4. 计算历史半年前的日期对应的周的开始和结束时间: ``` const startOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay()); const endOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6); ``` 在这里,我们使用了 Date 对象的getFullYear()、getMonth()、getDate()和getDay()方法来获取日期的年份、月份、日期和星期几。 5. 重复步骤4,直到获取到半年前最靠近当前时间的周的开始和结束时间。 6. 计算当前周期在当前年中是第多少周,可以使用以下代码: ``` const startOfYear = new Date(date.getFullYear(), 0, 1); const weekNumber = Math.ceil(((startOfWeek - startOfYear) / 86400000 + 1) / 7); ``` 在这里,我们首先使用 Date 对象的构造函数来创建当前年的第一天,然后计算当前周期的开始时间距离当前年的第一天的天数,并将其除以7,取整即可得到当前周期在当前年中是第多少周。其中,86400000是一天的毫秒数。 希望这些代码可以帮助你解决问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值