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;
}

//计算月份差
  function getMonthNumber(date1,date2){
  //默认格式为"20030303",根据自己需要改格式和方法
  var year1 =  date1.substr(0,4);
  var year2 =  date2.substr(0,4); 
  var month1 = date1.substr(4,2);
  var month2 = date2.substr(4,2);
  
  var len=(year2-year1)*12+(month2-month1);
  
  return len;


 }


var len=getMonthNumber('200403','200504');


//alert('2003-03-03'.replace(/-/g, "/"));


//alert('2003-03-03'.replace(/-/g, ""));

if(len<0){
  alert("查询起始月份不能比查询终止月份大.");
 }else if(len >11){  
   alert("查询月份时间段不能超过12个月.");


 }

//计算天数差
  function getDayNumber(date1,date2){
  //默认格式为"20030303",根据自己需要改格式和方法
  var year1 =  date1.substr(0,4);
  var year2 =  date2.substr(0,4); 
  var month1 = date1.substr(4,2);
  var month2 = date2.substr(4,2);
  
  var day1 = date1.substr(6,2);
  var day2 = date2.substr(6,2);
  
  temp1 = year1+"/"+month1+"/"+day1;
  temp2 = year2+"/"+month2+"/"+day2;
  
  var dateaa= new Date(temp1); 
  var datebb = new Date(temp2); 
  var date = datebb.getTime() - dateaa.getTime(); 
  var time = Math.floor(date / (1000 * 60 * 60 * 24));
  alert(time);

 }

getDayNumber('20030303','20040503');


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

 

posted @ 2015-12-17 17:44  阿尔法钻石狗  阅读(352)  评论(0编辑  收藏  举报