js 时间处理相关方法

1 篇文章 0 订阅
1 篇文章 0 订阅
/**
* 获取本周、本季度、本月、上月的开端日期、停止日期
*/
var now = new Date(); //当前日期
var nowDayOfWeek = now.getDay(); //今天本周的第几天
var nowDay = now.getDate(); //当前日
var nowMonth = now.getMonth(); //当前月
var nowYear = now.getYear(); //当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //

var lastMonthDate = new Date(); //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth()-1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();
export const endQuarterMap={"1":"03","2":"06","3":"09","4":"12"}
export const beginQuarterMap={"1":"01","2":"04","3":"07","4":"10"}
//格局化日期:yyyy-MM-dd
export function formatDate(date) {
    var myyear = date.getFullYear();
    var mymonth = date.getMonth()+1;
    var myweekday = date.getDate();

    if(mymonth < 10){
        mymonth = "0" + mymonth;
    }
    if(myweekday < 10){
        myweekday = "0" + myweekday;
    }
    return (myyear+"-"+mymonth + "-" + myweekday);
}

//获得某月的天数
export function getMonthDays(myMonth){
    var monthStartDate = new Date(nowYear, myMonth, 1);
    var monthEndDate = new Date(nowYear, myMonth + 1, 1);
    var days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);
    return days;    
}

//获得本季度的开端月份
export function getQuarterStartMonth(){
    var quarterStartMonth = 0;
    if(nowMonth<3){
        quarterStartMonth = 0;
    }
    if(2<nowMonth && nowMonth<6){
        quarterStartMonth = 3;
    }
    if(5<nowMonth && nowMonth<9){
        quarterStartMonth = 6;
    }
    if(nowMonth>8){
        quarterStartMonth = 9;
    }
    return quarterStartMonth;
}

//获得本周的开端日期
export function getWeekStartDate() {
    var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
    return formatDate(weekStartDate);
}

//获得本周的停止日期
export function getWeekEndDate() {
    var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
    return formatDate(weekEndDate);
}

//获得本月的开端日期
export function getMonthStartDate(){
    var monthStartDate = new Date(nowYear, nowMonth, 1);
    return formatDate(monthStartDate);
}

//获得本月的停止日期
export function getMonthEndDate(){
    var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
    return formatDate(monthEndDate);
}

//获得上月开端时候
export function getLastMonthStartDate(){
    var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
    return formatDate(lastMonthStartDate);
}

//获得上月停止时候
export function getLastMonthEndDate(){
    var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
    return formatDate(lastMonthEndDate);
}

//获得本季度的开端日期
export function getQuarterStartDate(){
    var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
    return formatDate(quarterStartDate);
}

//或的本季度的停止日期
export function getQuarterEndDate(){
    var quarterEndMonth = getQuarterStartMonth() + 2;
    var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
    return formatDate(quarterStartDate);
}

export function getCurrentQuarterNum(month=nowMonth){
    var quarterStartMonth = 1;
    if(month<4){
        quarterStartMonth = 1;
    }
    if(3<month && month<7){
        quarterStartMonth = 2;
    }
    if(6<month && month<10){
        quarterStartMonth = 3;
    }
    if(month>9){
        quarterStartMonth = 4;
    }
    return quarterStartMonth
}
//获取当前季度
export function getCurrentQuarter(nDate=new Date()){
    var quarterStartMonth = getCurrentQuarterNum(nDate.getMonth());
    return nDate.getFullYear()+'-'+quarterStartMonth;
}
// 获取上一季度
export function getLastQuarter(){
    var quarterNum = getCurrentQuarterNum();
    if((quarterNum-1)==0){
        return (nowYear-1)+'-'+4
    }else{
        return nowYear+'-'+(quarterNum-1)
    }
}
// 获取间隔季度日期
export function  getDifQuarter(dif=-1,nQuarter=getCurrentQuarter()){
    let dates=nQuarter.split('-')
    let nQuarterNum=Number(dates[1])
    let aDif=dif+nQuarterNum
    let yDif=parseInt(aDif/4)
    let qDif=aDif%4
    if(qDif>0){
        return (Number(dates[0])+yDif)+'-'+qDif
    }else{
        return (Number(dates[0])+yDif-1)+'-'+(qDif+4)
    }
}
// 获取间隔天数日期
export function getDifDate(dif=-1,nDate=new Date()){
    nDate.setMonth(nDate.getMonth()+dif)
    return nDate
}
//获取间隔月数日期
export function getDifMonth(dif=-1,nDate=new Date()){
    nDate.setMonth(nDate.getMonth()+dif)
    return nDate
}
// 获取间隔年数日期
export function getDifYear(dif=-1,nDate=new Date()){
    nDate.setFullYear(nDate.getFullYear()+dif)
    return nDate
}
//获取当前月份
export function getCurrentMonth(){
    return nowYear+'-'+(nowMonth+1)
}

方法列表:

1、格局化日期:yyyy-MM-dd

2、获得某月的天数

3、获得本季度的开端月份

4、获得本周的开端日期

5、获得本周的停止日期

6、获得本月的开端日期

7、获得本月的停止日期

8、获得上月开端时候

9、获得上月停止时候

10、获得本季度的开端日期

11、获得本季度的停止日期

12、获取当前季度

13、获取上一季度

14、获取间隔季度日期

15、获取间隔天数日期

16、获取间隔月数日期

17、获取间隔年数日期

18、获取当前月份

有啥问题可以加微信聊:chenkunlia

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值