1. 程式人生 > >js 日期格式操作

js 日期格式操作

//擴充套件Date的format方法 
    Date.prototype.format = function (format) {
        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(format)) {
            format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for (var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
            }
        }
        return format;
    }
    /**  
    *轉換日期物件為日期字串  
    * @param date 日期物件  
    * @param isFull 是否為完整的日期資料,  
    *               為true時, 格式如"2000-03-05 01:05:04"  
    *               為false時, 格式如 "2000-03-05"  
    * @return 符合要求的日期字串  
    */  
    function getSmpFormatDate(date, isFull) {
        var pattern = "";
        if (isFull == true || isFull == undefined) {
            pattern = "yyyy-MM-dd hh:mm:ss";
        } else {
            pattern = "yyyy-MM-dd";
        }
        return getFormatDate(date, pattern);
    }
    /**  
    *轉換當前日期物件為日期字串  
    * @param date 日期物件  
    * @param isFull 是否為完整的日期資料,  
    *               為true時, 格式如"2000-03-05 01:05:04"  
    *               為false時, 格式如 "2000-03-05"  
    * @return 符合要求的日期字串  
    */  

    function getSmpFormatNowDate(isFull) {
        return getSmpFormatDate(new Date(), isFull);
    }
    /**  
    *轉換long值為日期字串  
    * @param l long值  
    * @param isFull 是否為完整的日期資料,  
    *               為true時, 格式如"2000-03-05 01:05:04"  
    *               為false時, 格式如 "2000-03-05"  
    * @return 符合要求的日期字串  
    */  

    function getSmpFormatDateByLong(l, isFull) {
        return getSmpFormatDate(new Date(l), isFull);
    }
    /**  
    *轉換long值為日期字串  
    * @param l long值  
    * @param pattern 格式字串,例如:yyyy-MM-dd hh:mm:ss  
    * @return 符合要求的日期字串  
    */  

    function getFormatDateByLong(l, pattern) {
        return getFormatDate(new Date(l), pattern);
    }
    /**
    *轉換日期物件為日期字串  
    * @param l long值  
    * @param pattern 格式字串,例如:yyyy-MM-dd hh:mm:ss  
    * @return 符合要求的日期字串  
    */  
    function getFormatDate(date, pattern) {
        if (date == undefined) {
            date = new Date();
        }
        if (pattern == undefined) {
            pattern = "yyyy-MM-dd hh:mm:ss";
        }
        return date.format(pattern);
    }

	  //開始時間不能小於當前時間
	    function startTimeIsBigThanTotay(startTime){
	          var startdate = new Date((startTime).replace(/-/g,"/"));  
	          var date = new Date();  
	          if(startdate < date) 
	          {
	              return false;
	          }
	          else
	          {
	             return true;
	          }
	    }
	     
	    //結束時間不能小於當前時間 
	    function endThanTotay(endTime){
	          var enddate = new Date((endTime).replace(/-/g,"/"));  
	          var nowdate = new Date();     
	          if(enddate < nowdate)    
	          {
	              return false;
	          }
	          else
	          {
	             return true;
	          }
	    }
	     
	     
	    //結束時間不能小於開始時間 
	    function endThanStart(startTime,endTime){
	          var startdate = new Date((startTime).replace(/-/g,"/"));  
	          var enddate = new Date((endTime).replace(/-/g,"/"));    
	          if(enddate < startdate)  
	          {
	              return false;
	          }
	          else
	          {
	             return true;
	          }
	    }
	    function diffTime(startDate,endDate) {
	    	if(endDate==""||endDate==undefined)
	    		endDate = new Date().getTime(); 
	        var diff=Math.abs(endDate - startDate);//時間差的毫秒數  
	        
	        //計算出相差天數  
	        var days=Math.floor(diff/(24*3600*1000));  
	        //計算出小時數  
	        var daySecond=diff%(24*3600*1000);    //計算天數後剩餘的毫秒數  
	        var hours=Math.floor(daySecond/(3600*1000));  
	        //計算相差分鐘數  
	        var hourSecond=daySecond%(3600*1000);        //計算小時數後剩餘的毫秒數  
	        var minutes=Math.floor(hourSecond/(60*1000));  
	           
	        //計算相差秒數  
	        var minSecond=hourSecond%(60*1000);      //計算分鐘數後剩餘的毫秒數  
	        var seconds=Math.round(minSecond/1000);  
	          
	        var returnStr = seconds + "秒";  
	        if(minutes>0) {  
	            returnStr = minutes + "分" + returnStr;  
	        }  
	        if(hours>0) {  
	            returnStr = hours + "小時" + returnStr;  
	        }  
	        if(days>0) {  
	            returnStr = days + "天" + returnStr;  
	        }  
	        return returnStr;  
	    }  
	    
	    function diffDate(startDate, endDate, type) {
	    	  startDate = typeof startDate == 'string' ? new Date(startDate) : startDate;
	    	  startDate = startDate.getTime();
	    	  endDate = typeof endDate == 'string' ? new Date(endDate) : endDate;
	    	  endDate = endDate.getTime();
	    	  type = type || 'hour';
	    	  var diffValue = Math.abs(endDate - startDate);
	    	  var second = 1000,
	    	    minute = second * 60,
	    	    hour = minute * 60,
	    	    day = hour * 24,
	    	    month = day * 30,
	    	    year = month * 12;
	    	  var timeType = {
	    	    second: second,
	    	    minute: minute,
	    	    hour: hour,
	    	    day: day,
	    	    month: month,
	    	    year: year
	    	  };
	    	 
	    	  return Math.ceil(diffValue / timeType[type]);
	    	}