JS 中处理日期

本文介绍了一种使用JavaScript处理日期的方法,包括计算两个日期之间的天数差、排除周末后的天数差、日期加减天数等功能,并提供了具体实现的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 JS 中处理日期

 

<script type="text/javascript">
    
//计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数  
function  DateDiff(sDate1,  sDate2){    //sDate1和sDate2是2006-12-18格式  
       var oDate1  = StringToDate(sDate1);
       
var oDate2  = StringToDate(sDate2);
       
var iDays = (oDate2.getTime()-oDate1.getTime())/(24*60*60*1000);
       
//修正:2007-8-18到2007-8-18算一天,2007-8-18到2007-8-19算两天
   if(iDays > 0){
           iDays 
= iDays +1;
       }

   
if(iDays < 0){
           iDays 
= iDays -1;
       }

   
if(iDays == 0)//
           iDays = 1;
       }

       
//alert(sDate1+" 加上 0 天: "+addDays(sDate1,0));
       return iDays;
  }

       
       
//计算天数差的函数 yyyy-mm-dd (sDate2-sDate1)间的天数 去掉周末 
 function  DateDiffNoWeekDay(sDate1,  sDate2){    //sDate1和sDate2是2006-12-18格式  
           var oDate1  = StringToDate(sDate1);
           
var oDate2  = StringToDate(sDate2);
           
var days = 1;
           
//alert(sDate1+"  "+sDate2);
           var tempDate = oDate1;
           
while(tempDate.getTime() < oDate2.getTime()){
            tempDate 
= addDays(tempDate,2);//加一天
            if(!checkWeekDay(DateToString(tempDate))){//不是周末
             days++;
             
//alert(days);
            }

           }

        
return days;
       }

       
       
//yyyy-mm-dd 加上days天数后返回 yyyy-mm-dd
 function addDays(oDate,days){
     
if(days > 0){
            days 
= days - 1;
        }

    
if(days < 0){
            days 
= days + 1;
        }

     
var result = new Date(oDate.getTime()+(days*24 * 60 * 60 * 1000));
         
return result;
 }

       
//去掉周末 new 
 function addDaysNoWeekDay(sDate,days){
           oDate 
= StringToDate(sDate);
          
//修正:2007-8-18加1天或0天还是2007-8-18,2007-8-18加2天为2007-8-19
       if(days > 0){
                days 
= days - 1;
          }

      
if(days < 0){
                days 
= days + 1;
          }

     
          
var tempDate = oDate;
      
for(i=0;i<days;i++){
              tempDate 
= addDays(tempDate,2);//加上一天
          if(checkWeekDay(DateToString(tempDate))){//校验是不是周末
                  i--;
             }

          }

     
return DateToString(tempDate);
 }

       
//Date型转成yyyy-mm-dd
function DateToString(oDate){
        
var month = oDate.getMonth()+1;
       
var day = oDate.getDate();
    
if(month<10){
           month
="0"+month;
        }

   
if(day<10){
          day 
= "0"+day;
      }

      
return oDate.getFullYear() + "-" + month +"-"+ day;
  }

       
//yyyy-mm-dd型转成Date
  function StringToDate(sDate){
        
var aDate  =  sDate.split("-");
       
return new  Date(aDate[1]  +  "-"  +  aDate[2]  +  "-"  +  aDate[0]);
     }

       
    
//判断日期的正确性,yyyy-mm-dd
    String.prototype.isDate = function()
    
{
     
//用法:alert("2007-01-31".isDate());
        var r = this.match(/^(d{1,4})(-)(d{1,2})2(d{1,2})$/); 
           
if(r==null)return falsevar d = new Date(r[1], r[3]-1, r[4]); 
        
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
    }

    
    
//对String型校验 判断是不是周末 
    function checkWeekDay(sDate){
     aDate  
=  sDate.split("-")  
           oDate  
=  new  Date(aDate[1]  +  "-"  +  aDate[2]  +  "-"  +  aDate[0])    //转换为12-18-2006格式  
           day = oDate.getDay();
           
if(day==0 || day == 6){
            
return true;
           }

           
return false;
    }

    
    
//判断是否为数字
    function checknum(p) 
    

     p
=p.replace(/(^s*)|(s*$)/g, "");//去掉空格
     var l = p.length; 
     
var count=0
     
for(var i=0; i<l; i++
     

     
var digit = p.charAt(i); 
     
if(digit == "." ) 
     

       
++count; 
       
if(count>1
       
{
         
return false
       }
 
       }
 
     
else if(digit < "0" || digit > "9"
       
{
         
return false
       }
 
     }
 
     
return true
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值