javascript的日期加减

<script language=Javascript>
//日期自动补零程序
function appendZero(n)
{
 return(("00"+ n).substr(("00"+ n).length-2));
}
//获得当年当月最大天数
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(thismin) + ":" + appendZero(thissec);
   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 getMonthFirstDay(formattype)
{
 var Nowdate=new Date();
 var MonthFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth(),1);
 return formatDate(MonthFirstDay,formattype);
}
//取得本月最后一天
function getMonthLastDay(formattype)
{
 var Nowdate=new Date();
 var MonthNextFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth()+1,1);
 var MonthLastDay=new Date(MonthNextFirstDay-86400000);
 return formatDate(MonthLastDay,formattype);
}

/*
下列函数返回需要的时间 偏移值不能大于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.getYear();
 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或minute-表示相差的分钟 s或second-表示相差的秒数 ms或msecond-表示相差的毫秒数 w或week-表示相差的周数
//      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.month-1,TimeCom2.day))/(1000*60*60*24));
  break;
  case "h":
  case "hour":
  result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour))/(1000*60*60));
  break;
  case "m":
  case "minute":
  result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute))/(1000*60));
  break;
  case "s":
  case "second":
  result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom1.second)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute,TimeCom2.second))/1000);
  break;
  case "ms":
  case "msecond":
  result = Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom1.second,TimeCom1.msecond)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute,TimeCom2.second,TimeCom1.msecond);
  break;
  case "w":
  case "week":
  result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day))/(1000*60*60*24)) % 7;
  break;
  default:
  result = "invalid";
 }
 return(result);
}
/*
下列函数返回需要的时间 偏移值不能大于30
参数:interval : y或year-表示取得相差的年份 n或month-表示相差的月份 d或day表示相差的天数 h或hour-表示相差的小时 m或minute-表示相差的分钟 s或second-表示相差的秒数 ms或msecond-表示相差的毫秒数 w或week-表示相差的周数
      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(new Date(now));
 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.getYear()+"/"+M+"/"+Nowdate.getDate());
 return formatDate(Nowdate,formattype);
}
//上月第一天
function getPreviousFirstDay(formattype)
{
 var Nowdate=new Date();
 var MonthFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth()-1,1);
 return formatDate(MonthFirstDay,formattype);
}
//上月最后一天
function getPreviousLastDay(formattype)
{
 var Nowdate=new Date();
 var MonthFirstDay=new Date(Nowdate.getYear(),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.getYear(),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.getYear(),Nowdate.getMonth(),1);
 MonthFirstDay=new Date(new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+2,1)-86400000);
 return formatDate(MonthFirstDay,formattype);
}
/*
测试代码:
<input   name=haha   type=button   value="本周第一天"   οnclick=alert(getWeekFirstDay(0))><br />  
<input   name=haha   type=button   value="本周第七天"   οnclick=alert(getWeekLastDay(0))><br />  
<input   name=haha   type=button   value="本月第一天"   οnclick=alert(getMonthFirstDay(0))><br />   
<input   name=haha   type=button   value="本月最后一天"   οnclick=alert(getMonthLastDay(0))><br />
<input   name=haha   type=button   value="推前两天"   οnclick=alert(getDiffDate(-2,0))><br />  
<input   name=haha   type=button   value="推后两天"   οnclick=alert(getDiffDate(2,0))><br />
<input   name=haha   type=button   value="相差多个?"   οnclick=alert(DateDiff('d','2007/04/05','2008/01/02'))><br />   
<input   name=haha   type=button   value="日期随意加减"   οnclick=alert(DateAdd('d',2,'2007/04/05',0))><br />

<input   name=haha   type=button   value="取得当前日期"   οnclick=alert(getToDay(0))><br />  
<input   name=haha   type=button   value="取得上月第一天"   οnclick=alert(getPreviousFirstDay(0))><br />  
<input   name=haha   type=button   value="取得上月最后一天"   οnclick=alert(getPreviousLastDay(0))><br />  
<input   name=haha   type=button   value="取得上周第一天"   οnclick=alert(getPreviousFirstWeekDay(0))><br />  
<input   name=haha   type=button   value="取得上周最后一天"   οnclick=alert(showPreviousLastWeekDay(0))><br />  
 
<input   name=haha   type=button   value="昨天"   οnclick=alert(getPreviousDay(0))><br />  
<input   name=haha   type=button   value="今天"   οnclick=alert(getToDay(0))><br />
<input   name=haha   type=button   value="明天"   οnclick=alert(getNextDay(0))><br />  
<input   name=haha   type=button   value="下周第一天"   οnclick=alert(getNextFirstWeekDay(0))><br />  
<input   name=haha   type=button   value="下周最后一天"   οnclick=alert(getNextLastWeekDay(0))><br />  
<input   name=haha   type=button   value="下月第一天"   οnclick=alert(getNextFirstDay(0))><br />  
<input   name=haha   type=button   value="下月最后一天"   οnclick=alert(getNextLastDay(0))><br />
*/
</script>
<input   name=haha   type=button   value="本周第一天"   οnclick=alert(getWeekFirstDay(0))><br />  
<input   name=haha   type=button   value="本周第七天"   οnclick=alert(getWeekLastDay(0))><br />  
<input   name=haha   type=button   value="本月第一天"   οnclick=alert(getMonthFirstDay(0))><br />   
<input   name=haha   type=button   value="本月最后一天"   οnclick=alert(getMonthLastDay(0))><br />
<input   name=haha   type=button   value="推前两天"   οnclick=alert(getDiffDate(-2,0))><br />  
<input   name=haha   type=button   value="推后两天"   οnclick=alert(getDiffDate(2,0))><br />
<input   name=haha   type=button   value="相差多个?"   οnclick=alert(DateDiff('d','2007/04/05','2008/01/02'))><br />   
<input   name=haha   type=button   value="日期随意加减"   οnclick=alert(DateAdd('d',2,'2007/04/05',0))><br />

<input   name=haha   type=button   value="取得当前日期"   οnclick=alert(getToDay(0))><br />  
<input   name=haha   type=button   value="取得上月第一天"   οnclick=alert(getPreviousFirstDay(0))><br />  
<input   name=haha   type=button   value="取得上月最后一天"   οnclick=alert(getPreviousLastDay(0))><br />  
<input   name=haha   type=button   value="取得上周第一天"   οnclick=alert(getPreviousFirstWeekDay(0))><br />  
<input   name=haha   type=button   value="取得上周最后一天"   οnclick=alert(showPreviousLastWeekDay(0))><br />  
 
<input   name=haha   type=button   value="昨天"   οnclick=alert(getPreviousDay(0))><br />  
<input   name=haha   type=button   value="今天"   οnclick=alert(getToDay(0))><br />
<input   name=haha   type=button   value="明天"   οnclick=alert(getNextDay(0))><br />  
<input   name=haha   type=button   value="下周第一天"   οnclick=alert(getNextFirstWeekDay(0))><br />  
<input   name=haha   type=button   value="下周最后一天"   οnclick=alert(getNextLastWeekDay(0))><br />  
<input   name=haha   type=button   value="下月第一天"   οnclick=alert(getNextFirstDay(0))><br />  
<input   name=haha   type=button   value="下月最后一天"   οnclick=alert(getNextLastDay(0))><br />

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值