JavaScript时间工具类

/**
 * JavaScript日期工具类
 * @author ZhangLp
 */

/**
 * 获取当前月的第一天
 */
function getCurrentMonthFirst(){
 var date=new Date();
 date.setDate(1);
 return date;
}
/**
 * 获取当前月的最后一天
 */
function getCurrentMonthLast(){
 var date=new Date();
 var currentMonth=date.getMonth();
 var nextMonth=++currentMonth;
 var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
 var oneDay=1000*60*60*24;
 return new Date(nextMonthFirstDay-oneDay);
}
/**
 * 获取上个月的第一天
 */
function lastMonthFirst(){
    return new Date(getCurrentMonthFirst().setMonth(getCurrentMonthFirst().getMonth()-1));
}
/**
 * 获取上个月最后一天
 * @return
 */
function lastMonthLast(){
    return new Date(getCurrentMonthFirst().setDate(getCurrentMonthFirst().getDate()-1));
}
/**
 * 获取上上个月的第一天
 */
function lastLastMonthFirst(){
    return new Date(lastMonthFirst().setMonth(lastMonthFirst().getMonth()-1));
}
/**
 * 获取上上个月最后一天
 * @return
 */
function lastLastMonthLast(){
    return new Date(lastMonthFirst().setDate(lastMonthFirst().getDate()-1));
}
/**
 * 上N个月的第一天(N为变量)
 * 获取当前月之前倒退到第n个月的第一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的第一天)
 */
function beforeNMonthFirst(N){
    var forCurrMonthFirst = getCurrentMonthFirst();
    for(var i=0;i<N;i++){
        forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1));
    }
    return forCurrMonthFirst;
}
/**
 * 上N个月的最后一天(N为变量)
 * 获取当前月之前倒退到第n个月的最后一天(例如现在是10月12号,n=2,beforeNMonthFirst(2)意思是获取上上个月的最后一天)
 * @return
 */
function beforeNMonthLast(N){
    //获取n-1个月前的第一天
    var M = parseInt(N - 1);
    var forCurrMonthFirst = getCurrentMonthFirst();
    for(var i=0;i<M;i++){
        forCurrMonthFirst=new Date(forCurrMonthFirst.setMonth(forCurrMonthFirst.getMonth()-1));
    }
    return  new Date(forCurrMonthFirst.setDate(forCurrMonthFirst.getDate()-1));;
}
/**
 * @description 对Date的扩展,将 Date 转化为指定格式的String
 *                 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
 *                 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 *                 例子:
 *                 (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 *                (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18  
 * @param fmt
 * @return
 */ 
Date.prototype.Format = function(fmt) { //author: meizz   
    var o = {
        "M+" : this.getMonth() + 1, //月份   
        "d+" : this.getDate(), //
        "h+" : this.getHours(), //小时   
        "m+" : this.getMinutes(), //
        "s+" : this.getSeconds(), //
        "q+" : Math.floor((this.getMonth() + 3) / 3), //季度   
        "S" : this.getMilliseconds()
    //毫秒   
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
                .substr(4 - RegExp.$1.length));
    for ( var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
                    : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}
/**
 * 获取前X天或者后X天
 * @param AddDayCount 
 * @demo 今天:GetDateStr(0)    明天:GetDateStr(1)  昨天:GetDateStr(-1)  其它的以此类推
 */
function GetDateStr(AddDayCount) {
    var dd = new Date();
    dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
    var y = dd.getFullYear();
    var m = dd.getMonth()+1;//获取当前月份的日期
    var d = dd.getDate();
    return y+"-"+m+"-"+d;
}

//。。。持续补充更新中。。。

 

你可能感兴趣的:(JavaScript时间工具类)