首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

帮帮忙,一个JavaScript的基本有关问题

2012-02-14 
帮帮忙,一个JavaScript的基本问题!关于正则的问题html完整原代码是这样HTMLHEADTITLE 时间日期间隔:

帮帮忙,一个JavaScript的基本问题!
关于正则的问题
html完整原代码是这样
<HTML>
<HEAD>
<TITLE> 时间日期间隔:在线计算两个日期之间的,两个时间之间的时间间隔。钟表计时差。 </TITLE>
<meta   name= "description "   content= "物理教学计算工具 ">
<META   http-equiv=Content-Type   content= "text/html;   charset=gb2312 ">
<STYLE   type=text/css   >
BODY   {
MARGIN-回到页首:   0px;   FONT-SIZE:   14px;   MARGIN-LEFT:   10px;   FONT-FAMILY:   Verdana
}
A:link   {
  COLOR:   #3737c8;TEXT-DECORATION:   none
}
A:visited   {
    COLOR:#3737c8;TEXT-DECORATION:   none
}
A:active   {
COLOR:   green;TEXT-DECORATION:   none
}
A:hover   {
COLOR:   red;   TEXT-DECORATION:   underline
}

.stitle   {
FONT-SIZE:   12px;
LINE-HEIGHT:   120%;
height:   25px;
}
.mbody   {
FONT-SIZE:   12px;   LINE-HEIGHT:   150%
}
.sbody   {
FONT-SIZE:   12px;   LINE-HEIGHT:   100%
}
.nwes   {
  LINE-HEIGHT:   150%;
}
.hr   {
COLOR:   #666666;   BORDER-BOTTOM:   #dfdfdf   1px   solid
}
td   {
font-size:   12px;
height:25px;
}
</STYLE>
</HEAD>
<BODY   topmargin= "0 "   onload= "d() ">

<p>  
</p>
<p>  
</p>
<p>  
</p>
<p>  
</p>

<TABLE   width=750   height= "468 "  
    border=0   align=center   cellPadding=0   cellSpacing=0   class=mbody>
    <TBODY>
        <TR>  
           
            <TD   width= "619 "     rowspan= "0 "   vAlign=top> <p> <strong> 日期间隔时间差计算: </strong> 输入两个日期(包括时间),将会计算出两个日期间相差的周数、天数、小时数、分钟数和秒数,其中秒可以不填,为了方便纯粹计算日期,默认输入时间。你可以修改时间输入框中的时间为你需要的时间格式。 </p>
 


<SCRIPT   LANGUAGE= "JavaScript ">

function   isValidDate(dateStr)   {


var   datePat   =   /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

var   matchArray   =   dateStr.match(datePat);  
if   (matchArray   ==   null)   {
alert(dateStr   +   "   日期格式不正确. ")
return   false;
}
month   =   matchArray[1];  
day   =   matchArray[3];
year   =   matchArray[4];
if   (month   <   1   ||   month   >   12)   {  
alert( "月必须在01和12之间. ");
return   false;
}
if   (day   <   1   ||   day   >   31)   {
alert( "日必须在01到31之间. ");
return   false;
}
if   ((month==4   ||   month==6   ||   month==9   ||   month==11)   &&   day==31)   {
alert( "月份   "+month+ "   没有31天! ")
return   false;
}
if   (month   ==   2)   {   //   check   for   february   29th
var   isleap   =   (year   %   4   ==   0   &&   (year   %   100   !=   0   ||   year   %   400   ==   0));


if   (day> 29   ||   (day==29   &&   !isleap))   {
alert( "二月   "   +   year   +   "   没有   "   +   day   +   "   天! ");
return   false;
      }
}
return   true;
}

function   isValidTime(timeStr)   {


var   timePat   =   /^(\d{1,2}):(\d{1,2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var   matchArray   =   timeStr.match(timePat);
if   (matchArray   ==   null)   {
alert( "时间格式不正确. ");
return   false;
}
hour   =   matchArray[1];
minute   =   matchArray[2];
second   =   matchArray[4];
ampm   =   matchArray[6];

if   (second== " ")   {   second   =   null;   }
if   (ampm== " ")   {   ampm   =   null   }

if   (hour   <   0     ||   hour   >   23)   {
alert( "小时必须在01到12之间.   (或者00到23之间) ");
return   false;
}
if   (hour   <=   12   &&   ampm   ==   null)   {
if   (confirm( "Please   indicate   which   time   format   you   are   using.     OK   =   Standard   Time,   CANCEL   =   Military   Time "))   {
alert( "You   must   specify   AM   or   PM. ");
return   false;
      }
}
if     (hour   >   12   &&   ampm   !=   null)   {
alert( "You   can 't   specify   AM   or   PM   for   military   time. ");
return   false;
}
if   (minute   <   0   ||   minute   >   59)   {
alert   ( "Minute   must   be   between   0   and   59. ");
return   false;
}
if   (second   !=   null   &&   (second   <   0   ||   second   >   59))   {
alert   ( "秒必须在00到59之间. ");
return   false;
}
return   true;
}

function   dateDiff(dateform)   {
date1   =   new   Date();
date2   =   new   Date();
diff     =   new   Date();

if   (isValidDate(dateform.firstdate.value)   &&   isValidTime(dateform.firsttime.value))   {   //   Validates   first   date  
date1temp   =   new   Date(dateform.firstdate.value   +   "   "   +   dateform.firsttime.value);
date1.setTime(date1temp.getTime());
}
else   return   false;   //   otherwise   exits

if   (isValidDate(dateform.seconddate.value)   &&   isValidTime(dateform.secondtime.value))   {   //   Validates   second   date  
date2temp   =   new   Date(dateform.seconddate.value   +   "   "   +   dateform.secondtime.value);
date2.setTime(date2temp.getTime());
}
else   return   false;   //   otherwise   exits

//   sets   difference   date   to   difference   of   first   date   and   second   date

diff.setTime(Math.abs(date1.getTime()   -   date2.getTime()));



timediff   =   diff.getTime();

weeks   =   Math.floor(timediff   /   (1000   *   60   *   60   *   24   *   7));
timediff   -=   weeks   *   (1000   *   60   *   60   *   24   *   7);

days   =   Math.floor(timediff   /   (1000   *   60   *   60   *   24));  
timediff   -=   days   *   (1000   *   60   *   60   *   24);

hours   =   Math.floor(timediff   /   (1000   *   60   *   60));  
timediff   -=   hours   *   (1000   *   60   *   60);

mins   =   Math.floor(timediff   /   (1000   *   60));  
timediff   -=   mins   *   (1000   *   60);

secs   =   Math.floor(timediff   /   1000);  
timediff   -=   secs   *   1000;

days=days+weeks*7;

dateform.difference.value   =days   +   "   天,   "   +   hours   +   "   时,   "   +   mins   +   "   分,   and   "   +   secs   +   "   秒 ";

return   false;   //   form   should   never   submit,   returns   false
}
//     End   -->
</script>

<center> <form   onSubmit= "return   dateDiff(this); ">
<table   bgcolor= "#F8F8F8 ">
<tr> <td   width= "612 ">
<pre>
第一个日期:   <input   type=text   name=firstdate   value= " "   size=10   maxlength=10> (格式:08/09/1999   表示1999年8月9日)
            时间:   <input   type=text   name=firsttime   value= "08:09:10 "   size=20   maxlength=20> (格式:08:04:05Am   表示上午8点04分05秒,下午为pm.也可18:04:05)

第二个日期:   <input   type=text   name=seconddate   value= " "   size=10   maxlength=10> (格式:08/09/2005   表示1999年8月9日)
            时间:   <input   type=text   name=secondtime   value= "08:09:10 "   size=20   maxlength=20> (格式:08:04:05Am   表示上午8点04分05秒,下午为pm.也可18:04:05)

<center> <input   type=submit   value= "计算差别 ">

计算日期时间的差为: <br>
<input   type=text   name=difference   value= " "   size=60>
</center>
</pre>
</td> </tr>
</table>
</form>
</center>
        </TR>
</TBODY> </TABLE>
<HR   align=center   width=750   color=#cccccc   noShade   SIZE=1>
<TABLE   width=730   border=0   align=center   class=sbody>
    <TBODY>
        <TR>  
            <TD> <FONT   color=#999999> &nbsp;   </FONT> </TD>
            <TD   align=right> <FONT   color=#999999> </font> </TD>
        </TR>
    </TBODY>
</TABLE>
<SCRIPT>

</script>



</BODY> </HTML>


我想变成这样的输入格式:
第一个日期:   2007         //表示年
            时间:   3.25.18       //表示3月25日18点

第二个日期:   2007         //表示年
            时间:12.1.1       //表示12月1日1点

功能一样,请问应该怎么改,谢谢您.QQ47212184   不胜感激

[解决办法]
在页面上按照你的想法设计输入文本框,4个text。
然后在提交的检查函数中使用js的match方法精确匹配,检查输入的格式。
然后转换为时间和日期。
年份自然好转换。
时间使用split函数用.来分隔得到月/日/小时。
不是很难的。
js的正则表达式和Perl的几乎一样。
例如;str.match(/^\d{4}$/)
str.match(/^\d{1,2}\.\d{1,2}\.\d{1,2}$/);

呵呵。

热点排行