请高手解决
问题:
1、觉得程序不够简化。(请指点一下在哪里简化一下好些?)
2、当【开始日期】为2005-2-1【结束日期】为2005-3-1 算出的相差月数不是1个月,原因就是每年的2月为28或29天,但得到的【dParameter=(1000*24*60*60*30);】中的天数为30。(难道我要再加一个参数去判定是否为2月则将30改为28或29,怎样解决?)
3、为什么会这样:在GetDateDiff函数中,我原先的程序为
startDate=sDate.replace("-","/");这样为什么只能替换一个【-】啊
后来我就用split了(为什么会这样啊。vb中的replace好像不是这样,js中怎么是这样呢??)

解决方案 »

  1.   

    我觉得对于日期的处理,常见的语言都提供了日期时间对象,比如在js里面就有Date对象,一般都是先把字符串转换成Data对象来处理,只是要输出字符串的时候再转换成字符串
      

  2.   

    对于输入日期时间,最好的办法是直接用日期时间控件,一个htc文件,微软的网站能找到。如果自己写代码用文本框的话,最好分开,例如:
    <script>
    function MustInputNumber(o,sDefaultValue)
    {
    var nValue = parseInt(o.value);
    if(isNaN(nValue))
    {
    if(sDefaultValue)
    o.value = sDefaultValue;
    else
    o.value = "0";
    }
    else
    {
    o.value = nValue;
    }
    }
    </script>
    <div style="display:inline" nowrap style="BORDER: white 2px inset"><input onchange="MustInputNumber(this,'1900')" style="border:none;TEXT-ALIGN: right" maxlength="4" value="1900" size="4">-<input style="border:none;TEXT-ALIGN: right" maxlength="2" size="2" value="1" onchange="MustInputNumber(this,'1')">-<input style="border:none;TEXT-ALIGN: right" maxlength="2" size="2" value="1" onchange="MustInputNumber(this,'1')"></div>
      

  3.   

    求月份之差用这个
    <script language=javascript>
    <!--
    function getMonthCha(dt1,dt2){
      return (dt2.getYear()*12+dt2.getMonth())-
             (dt1.getYear()*12+dt1.getMonth());
    }
    alert(getMonthCha(new Date("2004/10/1"),new Date("2005/3/1")));
    // -->
    </script>
      

  4.   

    看来也只能这样了.
    求解startDate=sDate.replace("-","/");这样为什么只能替换一个【-】啊?
      

  5.   

    var d = "2005-5-5";
    d = d.replace("-","/");
    alert(d);
    这样为什么只能替换一个【-】啊?
      

  6.   

    d.replace(/\-/g,"/");
    这样可以全部替换,replace是用的正则表达式