js获取当前月的第一天最后一天,本周的第一天最后一天,指定格式输出

js 处理时间,获取年月日,当月第一天和最后一天,当前日期本周第一天和最后一天

1、获取当前月份的第一天

  //获取当前月份的第一天
 function getCurrentMonthFirst(fmt,datetime) {
    var date;
    if (isEmptyOrNull(datetime)) {
        date = new Date();
    }else{
        date=datetime
    }
    date.setDate(1);
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth()+1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

2、获取当前月份的最后一天

//获取当前月份的最后一天
function getCurrentMonthLast(fmt,datetime) {
    var date;
    if (isEmptyOrNull(datetime)) {
        date = new Date();
    } else {
        date = datetime;
    }
    var currentMonth=date.getMonth();
    var nextMonth=++currentMonth;
    var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
    var oneDay=1000*60*60*24;
    var lastTime=new Date(nextMonthFirstDay-oneDay);
    var month=parseInt(lastTime.getMonth()+1);
    var day=lastTime.getDate();
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": month+"",     // 月
        "d+": day+"",            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

3、获取当前时间的本周的第一天

//获取当前时间的本周的第一天的日期
function getWeekFirstDay(fmt,datetime){
    var curr;
    if (isEmptyOrNull(datetime)) {
        curr = new Date(datetime);
    }else{
        curr=datetime;
    }
    var first = curr.getDate() - curr.getDay();
    var firstday = new Date(curr.setDate(first));
    var month=firstday.getMonth()+1;
    var day=firstday.getDate();
    const opt = {
        "Y+": firstday.getFullYear().toString(),        // 年
        "m+": month+"",     // 月
        "d+": day+"",            // 日
        "H+": firstday.getHours().toString(),           // 时
        "M+": firstday.getMinutes().toString(),         // 分
        "S+": firstday.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

4、获取当前时间的本周的最后一天的日期

//获取当前时间的本周的最后一天的日期
function getWeekLastDay(fmt,datetime){
    var curr;
    if (isEmptyOrNull(datetime)) {
        curr = new Date();
    }else {
        curr = datetime;
    }
    var first = curr.getDate() - curr.getDay();
    var last = first + 6;
    var lastDay = new Date(curr.setDate(last));
    var month=lastDay.getMonth()+1;
    var day=lastDay.getDate();
    if (month<10){
        month='0'+month
    }
    if (day<10){
        day='0'+day
    }
    const opt = {
        "Y+": lastDay.getFullYear().toString(),        // 年
        "m+": month+"",     // 月
        "d+": day+"",            // 日
        "H+": lastDay.getHours().toString(),           // 时
        "M+": lastDay.getMinutes().toString(),         // 分
        "S+": lastDay.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

5、对时间进行加减


//对时间进行加减
function getTimeOpera(fmt,date,value) {
        var timeArr = value.split("|")
        var y = timeArr[0];
        var m = timeArr[1];
        var d = timeArr[2];
        var h = timeArr[3];
        var mm = timeArr[4];
        var s = timeArr[5];
        var nY=date.getFullYear().toString();
        var nM=(date.getMonth() + 1).toString();
        var nD=date.getDate().toString();
        var nH=date.getHours().toString();
        var nMM=date.getMinutes().toString();
        var nS=date.getSeconds().toString();
        var newTimeStr=nY+"-"+nM+"-"+nD+" "+nH+":"+nMM+":"+nS;
        var newTime=new Date(newTimeStr);
        if (y!=0){
            newTime.setFullYear(newTime.getFullYear() + y);
        }
        if (m!=0){
            newTime.setMonth(newTime.getMonth() + parseInt(m));
        }
        if (d!=0){
            newTime.setDate(newTime.getDate() + parseInt(d));
        }
        if (h!=0){
            newTime.setHours(newTime.getHours() + h);
        }
        if (mm!=0){
            newTime.setMinutes(newTime.getMinutes() + mm);
        }
        if (s!=0){
            newTime.setSeconds(newTime.getSeconds() + s);
        }
        const opt = {
            "Y+": newTime.getFullYear().toString(),        // 年
            "m+": (newTime.getMonth()+1).toString(),     // 月
            "d+": newTime.getDate().toString(),            // 日
            "H+": newTime.getHours().toString(),           // 时
            "M+": newTime.getMinutes().toString(),         // 分
            "S+": newTime.getSeconds().toString()          // 秒
            // 有其他格式化字符需求可以继续添加,必须转化成字符串
        };
        for (let k in opt) {
            ret = new RegExp("(" + k + ")").exec(fmt);
            if (ret) {
                fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
            }
        }
        return fmt;
    }
//时间格式输出
function dateFormat(fmt, date) {
    let ret;
    if (isEmptyOrNull(date)) {
        date = new Date()
    }
    if (isEmptyOrNull(fmt)) {
        fmt = 'YYYY-mm-dd HH:MM:SS'
    }
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt;
}





//判断非空
 function isEmptyOrNull(v){
    return  (v===undefined || v==="" || v===null || v===NaN);
}

注意:参数fmt 表示返回格式:例如YYYY-mm-dd HH:MM:SS或者YYYY-mm-dd,等
参数date 表示传输时间,如果这个参数为空,那么会默认当前时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值