读书人

大家关于用Javascript计算日期的有关问

发布时间: 2012-03-26 15:46:56 作者: rapoo

紧急求助大家关于用Javascript计算日期的问题,谢谢
我编写了一个用Javascript计算日期的函数,例如现在日期为“2007-06-04”,周期为“7个月”,计算有效日期应为“2008-01-03”,但是我编写的程序没有既没有计算,结果也没有显示出来,请大家帮我看看是什么问题,帮我修改一下,谢谢

<script language= "JavaScript " >
function youxiaoriqi()
{ document.form1.jdzq.value = document.form1.jdzq1.value
var jiandingriqi=document.form1.jdrq.value;
var diff=document.form1.jdzq.value;
var year=jiandingriqi.getyear();
var month=jiandingriqi.getmonth();
var day=jiandingriqi.getday();
var numDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var isLeap = false;
var newyear = year;
var newmonth = month - 1;
var n = numDays[newmonth];
var newday = day;
var newdiff = diff;
var ln;
if (newmonth == 0)
ln = 31;
else if(newmonth == 11)
ln = 31;
else
ln = numDays[newmonth + 1];
if (diff != 0)...{
//判断是否润年
if (year % 4 == 0)...{
if (year % 100 != 0)
isLeap = true;
else...{
if (year % 400 == 0)
isLeap = true;


}
}
if (newmonth == 1 && isLeap)
++n;

if (newmonth == 0 && isLeap)
++ln;
//加值
var newday = day + newdiff;
if (newday > 0)...{
if (newday > n)...{
newday = newday - n;
if (newmonth == 11)
...{
newmonth = 0;
newyear += 1;
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
else...{


newmonth += 1
newdiff = newday - 1;
return DayAddDiff(newyear, newmonth + 1, 1, newdiff);
}
}
}
else if (newday == 0)...{
if (newmonth == 0)
...{
newmonth = 11
newyear += -1;
newday = 31;
}
else...{
newmonth += -1
newday = ln;
}
}
else...{
if (newmonth == 0)
...{


newmonth = 11
newyear += -1;
newdiff = newday;
newday = 31;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
else...{
newmonth += -1;
newdiff = newday;
newday = ln;
return DayAddDiff(newyear, newmonth + 1, newday, newdiff);
}
}
}
//输出字符串
var daystring = " ";
daystring += year;
newmonth += 1;
if (newmonth < 10)
daystring += "/0 " + newmonth;
else
daystring += "/ " + newmonth;


if (newday < 10)
daystring += "/0 " + newday;
else
daystring += "/ " + newday;
document.form1.yxrq.value=daystring;
}
</script>

<style type= "text/css ">
<!--
.STYLE1 {font-size: 12px}
.STYLE2 {font-size: 16px}
.STYLE3 {font-size: 12px}
-->
</style>

<form name= "form1 " method= "post " action= "Untitled-2-1.asp " >
<table width= "100% " border= "0 " cellspacing= "1 " cellpadding= "2 ">
<tr bgcolor= "#4E5960 ">
<td height= "20 " align= "center " class= "heading "> <font color= "#FFFFFF " class= "STYLE2 "> <b> 证 书 / 报 告 录 入 </b> </font> </td>
</tr>
</table>
<table width= "100% " border= "1 " cellspacing= "0 " cellpadding= "1 " bordercolordark= "#FFFFFF " bordercolor= "#000000 ">
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "jdrq " type= "text " class= "STYLE2 " value= " <%=Date()%> "size= "20 " maxlength= "20 " /> </td>
</tr>
<tr>
<td width= "25% " height= "30 " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定周期: </div> </td>
<td width= "75% " bgcolor= "#efefef " style= "height:30px;position:relative ">
<select name= "jdzq1 " class= "STYLE2 " id= "jdzq1 " style= "position:absolute;width:80px; clip:rect(0 80 60 60); " onChange= "youxiaoriqi() ">
<option value= " "> </option>


<option value= "2 "> 2 </option>
<option value= "3 "> 3 </option>
<option value= "6 "> 6 </option>
<option value= "12 "> 12 </option>
<option value= "24 "> 24 </option>
<option value= "36 "> 36 </option>
</select>
<input name= "jdzq " type= "text " class= "STYLE2 " id= "jdzq " style= "position:absolute;width:80px; " onFocus= "this.value= ' ';document.form1.jdzq1.value= ' '; " value= " " />
</td>
</tr>
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 有效日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "yxrq " type= "text " class= "STYLE2 " size= "20 " maxlength= "20 " /> </td>
</tr>

</table>
</form>

[解决办法]
<script language= "JavaScript " >
function youxiaoriqi()
{
var jiandingriqi=document.form1.jdrq.value;
var sel = document.form1.jdzq;
if(sel.selectedIndex==0 || jiandingriqi== " ") return false;
var a = jiandingriqi.split( "- ");
if(a.length != 3) return false;
var theday = new Date(parseInt(a[0]),parseInt(a[1]-1),parseInt(a[2]));
var d = new Date(theday.getFullYear(), theday.getMonth() + parseInt(sel.options[sel.selectedIndex].value), theday.getDate()-1);
var m = parseInt(d.getMonth())+1;
var t = d.getDate();
m = "0 " + m;
m = m.substr(m.length-2,2);
t = "0 " + t;
t = t.substr(t.length-2,2);
document.form1.yxrq.value = d.getFullYear() + "- " + m + "- " + t;
}
</script>

<style type= "text/css ">
<!--
.STYLE1 {font-size: 12px}
.STYLE2 {font-size: 16px}
.STYLE3 {font-size: 12px}
-->
</style>

<form name= "form1 " method= "post " action= "Untitled-2-1.asp " >
<table width= "100% " border= "0 " cellspacing= "1 " cellpadding= "2 ">
<tr bgcolor= "#4E5960 ">
<td height= "20 " align= "center " class= "heading "> <font color= "#FFFFFF " class= "STYLE2 "> <b> 证 书 / 报 告 录 入 </b> </font> </td>
</tr>
</table>


<table width= "100% " border= "1 " cellspacing= "0 " cellpadding= "1 " bordercolordark= "#FFFFFF " bordercolor= "#000000 ">
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "jdrq " type= "text " class= "STYLE2 " value= " "size= "20 " maxlength= "20 " /> </td>
</tr>
<tr>
<td width= "25% " height= "30 " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定周期: </div> </td>
<td width= "75% " bgcolor= "#efefef " style= "height:30px;position:relative ">
<select name= "jdzq " class= "STYLE2 " id= "jdzq1 " onChange= "youxiaoriqi() ">
<option value= " "> 选择检定周期: </option>
<option value= "2 "> 2 </option>
<option value= "3 "> 3 </option>
<option value= "6 "> 6 </option>
<option value= "12 "> 12 </option>
<option value= "24 "> 24 </option>
<option value= "36 "> 36 </option>
</select>
</td>
</tr>
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 有效日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "yxrq " type= "text " class= "STYLE2 " size= "20 " maxlength= "20 " /> </td>
</tr>

</table>
</form>

[解决办法]
<script language= "JavaScript " >
function youxiaoriqi()
{
var jiandingriqi=document.form1.jdrq.value;
var sel = document.form1.jdzq;
if(sel.selectedIndex==0 || jiandingriqi== " ") return false;
var theday = new Date(jiandingriqi.replace(/-/ig, "/ "));
var d = new Date(theday.getFullYear(), theday.getMonth() + parseInt(sel.options[sel.selectedIndex].value), theday.getDate()-1);
if(d.getDate()+1 != theday.getDate()) d.setDate(0);
var m = parseInt(d.getMonth())+1;//加了这一句
var t = d.getDate();
m = "0 " + m;
m = m.substr(m.length-2,2);
t = "0 " + t;
t = t.substr(t.length-2,2);
document.form1.yxrq.value = d.getFullYear() + "- " + m + "- " + t;
}
</script>

<head>
<style type= "text/css ">
<!--
.STYLE1 {font-size: 12px}
.STYLE2 {font-size: 16px}
.STYLE3 {font-size: 12px}
-->
</style>

<form name= "form1 " method= "post " action= "Untitled-2-1.asp " >
</head>

<table width= "100% " border= "0 " cellspacing= "1 " cellpadding= "2 ">
<tr bgcolor= "#4E5960 ">
<td height= "20 " align= "center " class= "heading "> <font color= "#FFFFFF " class= "STYLE2 "> <b> 证 书 / 报 告 录 入 </b> </font> </td>


</tr>
</table>
<table width= "100% " border= "1 " cellspacing= "0 " cellpadding= "1 " bordercolordark= "#FFFFFF " bordercolor= "#000000 ">
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "jdrq " type= "text " class= "STYLE2 " value= "2007-12-31 " size= "20 " maxlength= "20 " /> </td>
</tr>
<tr>
<td width= "25% " height= "30 " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 检定周期: </div> </td>
<td width= "75% " bgcolor= "#efefef " style= "height:30px;position:relative ">
<select name= "jdzq " class= "STYLE2 " id= "jdzq1 " onChange= "youxiaoriqi() ">
<option value= " "> 选择检定周期: </option>
<option value= "2 "> 2 </option>
<option value= "3 "> 3 </option>
<option value= "6 "> 6 </option>
<option value= "12 "> 12 </option>
<option value= "24 "> 24 </option>
<option value= "36 "> 36 </option>
</select>
</td>
</tr>
<tr>
<td width= "25% " bgcolor= "#bfbfbf ">
<div align= "center " class= "STYLE2 "> 有效日期: </div> </td>
<td width= "75% " bgcolor= "#efefef ">
<input name= "yxrq " type= "text " class= "STYLE2 " size= "20 " maxlength= "20 " /> </td>
</tr>

</table>
</form>

读书人网 >JavaScript

热点推荐