Javascript 日期Date工具类(包含日期比较)

本文提供了一系列JavaScript函数,用于处理日期格式化、获取特定日期、计算日期差等常见任务。这些函数简化了日常开发中涉及日期计算的工作流程。

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

//获得当年当月最大天数  
function GetMonthMaxDay(theYear,theMonth){                                                                             
  var theDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);                                                        
  var theMonthDay = 0, tmpYear = this.formatYear(theYear);                                                             
  theMonthDay = theDays[theMonth];                                                                                     
  if (theMonth == 1){ //theMonth is February                                                                           
      if (((tmpYear % 4 == 0) && (tmpYear % 100 != 0)) || (tmpYear % 400 == 0)){                                       
          theMonthDay++;                                                                                               
      }                                                                                                                
  }                                                                                                                    
  return(theMonthDay);                                                                                                 
}                                                                                                                      
//把年份格式化成4位                                                                                                    
function formatYear(theYear){                                                                                          
  var tmpYear = parseInt(theYear,10);                                                                                  
  if (tmpYear < 100){                                                                                                  
  tmpYear += 1900;                                                                                                     
  if (tmpYear < 1940){                                                                                                 
  tmpYear += 100;                                                                                                      
  }                                                                                                                    
  }                                                                                                                    
  if (tmpYear < this.MinYear){                                                                                         
  tmpYear = this.MinYear;                                                                                              
  }                                                                                                                    
  if (tmpYear > this.MaxYear){                                                                                         
  tmpYear = this.MaxYear;                                                                                              
  }                                                                                                                    
  return(tmpYear);                                                                                                     
}                                                                                                                      
//对javascript日期进行格式化                                                                                           
//formattype是返回的时间类型                                                                                           
//返回:返回时间串                                                                                                     
function formatDate(day,formattype){                                                                                   
    var dateString = "";                                                                                               
                                                                                                                       
    var thisyear = formatYear(day.getFullYear());                                                                      
    var thismonth = appendZero(day.getMonth()+1);                                                                      
    var thisday = appendZero(day.getDate());                                                                           
    var thishour = appendZero(day.getHours());                                                                         
    var thismin  = appendZero(day.getMinutes());                                                                       
    var thissec  = appendZero(day.getSeconds());                                                                       
    switch (formattype){                                                                                               
        case 0:                                                                                                        
            dateString = thisyear + "年" + thismonth + "月" + thisday + "日";                                          
            break;                                                                                                     
        case 1:                                                                                                        
            dateString = thisyear + "-" + thismonth + "-" + thisday;                                                   
            break;                                                                                                     
        case 2:                                                                                                        
            dateString = thisyear + "-" + thismonth + "-" + thisday+ " " + appendZero(thishour) + ":" + appendZero(this
            break;                                                                                                     
        default:                                                                                                       
            dateString = thisyear + "-" + thismonth + "-" + thisday;                                                   
    }                                                                                                                  
    return dateString;                                                                                                 
}                                                                                                                      
//取得本周第一天                                                                                                       
function getWeekFirstDay(formattype)                                                                                   
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    return formatDate(WeekFirstDay,formattype);                                                                        
}                                                                                                                      
//取得本周第七天                                                                                                       
function getWeekLastDay(formattype)                                                                                    
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    var WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);                                                        
    return formatDate(WeekLastDay,formattype);                                                                         
}                                                                                                                      
function testDate() {                                                                                                  
    var Nowdate=new Date();                                                                                            
    //本月                                                                                                             
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);                                            
    alert(MonthFirstDay.getFullYear())                                                                                 
    alert(appendZero(MonthFirstDay.getMonth()+1))                                                                      
    //上月                                                                                                             
    var lastMonth = new Date(Nowdate.getFullYear(),Nowdate.getMonth()-1,1);                                            
    alert(lastMonth.getFullYear())                                                                                     
    alert(appendZero(lastMonth.getMonth()+1))                                                                          
                                                                                                                       
                                                                                                                       
}                                                                                                                      
//取得本月第一天                                                                                                       
function getMonthFirstDay(formattype)                                                                                  
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);                                            
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//取得本月最后一天                                                                                                     
function getMonthLastDay(formattype)                                                                                   
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthNextFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()+1,1);                                      
    var MonthLastDay=new Date(MonthNextFirstDay-86400000);                                                             
    return formatDate(MonthLastDay,formattype);                                                                        
}                                                                                                                      
function getDateFromString(strDate){                                                                                   
                                                                                                                       
    var arrYmd = strDate.split("-");                                                                                   
    for(var i=0;i<arrYmd.length;i++){                                                                                  
        if(arrYmd[i].length>1 && arrYmd[i].indexOf("0")==0)                                                            
            arrYmd[i]= arrYmd[i].substring(1);                                                                         
    }                                                                                                                  
    var numYear = parseInt(arrYmd[0]);                                                                                 
    var numMonth = parseInt(arrYmd[1]) - 1;                                                                            
    var numDay = parseInt(arrYmd[2]);                                                                                  
    return new Date(numYear, numMonth, numDay);                                                                        
}                                                                                                                      
/*                                                                                                                     
下列函数返回需要的时间 偏移值不能大于30                                                                                
参数:dadd是日偏移值,-表示向前推,+向后推                                                                             
      formattype是返回的时间类型                                                                                       
返回:返回时间串                                                                                                       
*/                                                                                                                     
function getDiffDate(dadd,formattype)                                                                                  
{                                                                                                                      
  //可以加上错误处理                                                                                                   
    var a = new Date();                                                                                                
    a = a.valueOf();                                                                                                   
    a = a + dadd * 24 * 60 * 60 * 1000;                                                                                
    a = new Date(a);                                                                                                   
    return formatDate(a,formattype);                                                                                   
}                                                                                                                      
                                                                                                                       
//getDiffDate(+2,0)                                                                                                    
                                                                                                                       
//取得指定日期的年月日时分秒                                                                                           
//参数:dateValue 是格式形如:2007/04/05                                                                               
function TimeCom(dateValue){                                                                                           
    var newCom = new Date(dateValue);                                                                                  
    this.year = newCom.getFullYear();                                                                                  
    this.month = newCom.getMonth()+1;                                                                                  
    this.day = newCom.getDate();                                                                                       
    this.hour = newCom.getHours();                                                                                     
    this.minute = newCom.getMinutes();                                                                                 
    this.second = newCom.getSeconds();                                                                                 
    this.msecond = newCom.getMilliseconds();                                                                           
    this.week = newCom.getDay();                                                                                       
}                                                                                                                      
                                                                                                                       
//取得两个日期之间的时间差                                                                                             
// 参数:interval : y或year-表示取得相差的年份 n或month-表示相差的月份 d或day表示相差的天数 h或hour-表示相差的小时 m或m
//      date1:起始日期                                                                                                 
//      date2:结束日期                                                                                                 
function DateDiff(interval,date1,date2)                                                                                
{                                                                                                                      
    var TimeCom1 = new TimeCom(date1);                                                                                 
    var TimeCom2 = new TimeCom(date2);                                                                                 
    var result;                                                                                                        
    switch(String(interval).toLowerCase())                                                                             
    {                                                                                                                  
        case "y":                                                                                                      
        case "year":                                                                                                   
        result = TimeCom1.year-TimeCom2.year;                                                                          
        break;                                                                                                         
        case "n":                                                                                                      
        case "month":                                                                                                  
        result = (TimeCom1.year-TimeCom2.year)*12+(TimeCom1.month-TimeCom2.month);                                     
        break;                                                                                                         
        case "d":                                                                                                      
        case "day":                                                                                                    
        result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day)-Date.UTC(TimeCom2.year,TimeCom2.mont
        break;                                                                                                         
        case "h":                                                                                                      
        case "hour":                                                                                                   
        result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour)-Date.UTC(TimeCom2.year
        break;                                                                                                         
        case "m":                                                                                                      
        case "minute":                                                                                                 
        result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute)-Date.U
        break;                                                                                                         
        case "s":                                                                                                      
        case "second":                                                                                                 
        result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom
        break;                                                                                                         
        case "ms":                                                                                                     
        case "msecond":                                                                                                
        result = Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom1.second,Tim
        break;                                                                                                         
        case "w":                                                                                                      
        case "week":                                                                                                   
        result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day)-Date.UTC(TimeCom2.year,TimeCom2.mont
        break;                                                                                                         
        default:                                                                                                       
        result = "invalid";                                                                                            
    }                                                                                                                  
    return(result);                                                                                                    
}                                                                                                                      
/*                                                                                                                     
下列函数返回需要的时间 偏移值不能大于30                                                                                
参数:interval : y或year-表示取得相差的年份 n或month-表示相差的月份 d或day表示相差的天数 h或hour-表示相差的小时 m或minu
      num是偏移值,-表示向前推,+向后推                                                                                
      dateValue 指定的日期                                                                                             
      formattype是返回的时间类型                                                                                       
返回:返回时间串                                                                                                       
*/                                                                                                                     
function DateAdd(interval,num,dateValue,formattype)                                                                    
{                                                                                                                      
    var newCom = new TimeCom(dateValue);                                                                               
    switch(String(interval).toLowerCase())                                                                             
    {                                                                                                                  
        case "y": case "year": newCom.year += num; break;                                                              
        case "n": case "month": newCom.month += num; break;                                                            
        case "d": case "day": newCom.day += num; break;                                                                
        case "h": case "hour": newCom.hour += num; break;                                                              
        case "m": case "minute": newCom.minute += num; break;                                                          
        case "s": case "second": newCom.second += num; break;                                                          
        case "ms": case "msecond": newCom.msecond += num; break;                                                       
        case "w": case "week": newCom.day += num*7; break;                                                             
        default: return("invalid");                                                                                    
    }                                                                                                                  
    var now = newCom.year+"/"+newCom.month+"/"+newCom.day+" "+newCom.hour+":"+newCom.minute+":"+newCom.second;         
    return formatDate(new Date(now),formattype);                                                                       
}                                                                                                                      
//alert(DateAdd('d',-30,new Date(),0));                                                                                
//取得当前日期                                                                                                         
function getToDay(formattype){                                                                                         
    var Nowdate=new Date();                                                                                            
    M=Number(Nowdate.getMonth())+1;                                                                                    
    Nowdate = new Date(Nowdate.getFullYear()+"/"+M+"/"+Nowdate.getDate());                                             
    return formatDate(Nowdate,formattype);                                                                             
}                                                                                                                      
//上月第一天                                                                                                           
function getPreviousFirstDay(formattype)                                                                               
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()-1,1);                                          
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
                                                                                                                       
//上月最后一天                                                                                                         
function getPreviousLastDay(formattype)                                                                                
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);                                            
    return formatDate(new Date(MonthFirstDay-86400000),formattype);                                                    
}                                                                                                                      
//上周第一天                                                                                                           
function getPreviousFirstWeekDay(formattype)                                                                           
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    WeekFirstDay=new Date(WeekFirstDay-86400000*7);                                                                    
    return formatDate(WeekFirstDay,formattype);                                                                        
}                                                                                                                      
//上周最后一天                                                                                                         
function showPreviousLastWeekDay(formattype)                                                                           
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    WeekFirstDay = new Date(WeekFirstDay-86400000);                                                                    
    return formatDate(WeekFirstDay,formattype);                                                                        
}                                                                                                                      
//上一天                                                                                                               
function getPreviousDay(formattype)                                                                                    
{                                                                                                                      
    var MonthFirstDay=new Date();                                                                                      
    MonthFirstDay = new Date(MonthFirstDay-86400000);                                                                  
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//下一天                                                                                                               
function getNextDay(formattype)                                                                                        
{                                                                                                                      
    var MonthFirstDay=new Date();                                                                                      
    MonthFirstDay = new Date((MonthFirstDay/1000+86400)*1000);                                                         
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//下周第一天                                                                                                           
function getNextFirstWeekDay(formattype)                                                                               
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    var MonthFirstDay=new Date((WeekFirstDay/1000+6*86400)*1000);                                                      
    MonthFirstDay=new Date((MonthFirstDay/1000+86400)*1000);                                                           
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//下周最后一天                                                                                                         
function getNextLastWeekDay(formattype)                                                                                
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);                                                  
    var WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);                                                        
    var MonthFirstDay=new Date((WeekLastDay/1000+7*86400)*1000);                                                       
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//下月第一天                                                                                                           
function getNextFirstDay(formattype)                                                                                   
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);                                            
    MonthFirstDay=new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+1,1);                                      
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      
//下月最后一天                                                                                                         
function getNextLastDay(formattype)                                                                                    
{                                                                                                                      
    var Nowdate=new Date();                                                                                            
    var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);                                            
    MonthFirstDay=new Date(new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+2,1)-86400000);                   
    return formatDate(MonthFirstDay,formattype);                                                                       
}                                                                                                                      





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ricksu105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值