javascript的一些時間的運算

來源:互聯網
上載者:User

在用到時間驗證時,後台驗證會浪費伺服器資源,使用者也會有等待,
因此想到用自訂驗證控制項,下面放入了一些經常用的時間運算

由於用戶端驗證控制項不允許前台修改錯誤資訊,所以用個td來代替。
為了防止空格和無內容時也會抖動,td在無錯誤時加入文字
同時,此例中的送花日期TextBox6用到了梅花雪的日曆控制項。
因為日期型資料預設讀取的日期為yyyy-M-d型,梅花雪控制項日期形式為yyyy-MM-dd型,所以都需要轉換為yyyy-MM-dd型
compearday中的compdt3為後台設定的訂單支援上限日期

 <SCRIPT language="JavaScript">
  <!--  
 function compearday(source,value)
{
var compdt1 = new Date();
compdt1=document.getElementById("TextBox6").value;

var year = new Date().getYear();
var month = new Date().getMonth()+1;
var day = new Date().getDate();
if(month<10)month="0"+month;
if(day<10)day="0"+day;

var compdt2 = year+'-'+month+'-'+day;//今天

//execScript('monthafter = DateAdd("M", 1, date())','vbscript'); //一個月後今天//得到的是UTC日期格式
//var s=new Date(monthafter);
//function   appendZero(s){return   ("00"+s).substr((""+s).length);}
//var compdt3 = s.getFullYear() + "-" + appendZero(s.getMonth()+1) + "-" + appendZero(s.getDate());//轉換格式yyyy-MM-dd
var compdt3 = new Date();//天數上限日期
compdt3=document.getElementById("texth").value;
if(compdt1<compdt2||compdt1>compdt3)//小於今天或者大於上限日期
   value.IsValid = false; 
 else
   value.IsValid = true;
}
  //-->  

   function compeartime(source,value)
   {
    var   compdt1;
    compdt1=document.getElementsByName("RadioButtonList2");
    for(i=0;i<compdt1.length;i++)
    {
     if(eval('document.all.RadioButtonList2_' + i).checked)
     {
      var str;
      var now=new Date();
      var s=new Date(now);
      function   appendZero(s)
      {
       return   ("00"+s).substr((""+s).length);
      }
      //var compdt2 = s.getFullYear() + "年" + appendZero(s.getMonth()+1) + "月" + appendZero(s.getDate()) + "日 " + appendZero(s.getHours()) + ":" + appendZero(s.getMinutes()) + ":" + appendZero(s.getSeconds());
      var compdt2 = new Date().getYear() + "年" + (new Date().getMonth()+1) + "月" + new Date().getDate() + "日 " + appendZero(s.getHours()) + ":" + appendZero(s.getMinutes()) + ":" + appendZero(s.getSeconds());
     
      //var compdt3 = s.getFullYear() + "年" + appendZero(s.getMonth()+1) + "月" + appendZero(s.getDate()) + "日 "
      var compdt3 = new Date().getYear() + "年" + (new Date().getMonth()+1) + "月" + new Date().getDate() + "日 "
     
      var compdt4 = s.getFullYear() + "-" + appendZero(s.getMonth()+1) + "-" + appendZero(s.getDate());//今天
     
      var compdt5 = document.getElementById("TextBox6").value;
      if(compdt4==compdt5)//如果選擇的是今天送花
      {
      if(AddHours(3)>(compdt3 +"21:00:00"))//現在時間+3小時大於今天的21點
      {
     
          value.IsValid = false;
          str='<font color=red>今天已經不夠時間準備,請下明天的訂單!</font>';
          td1.innerHTML=str;
      }
      else
      {
       value.IsValid = true;
       str="市區必須提前3小時下單,節假日除外";
       td1.innerHTML=str;
       if(compdt2>compdt3 + eval('document.all.RadioButtonList2_' + i).value)//現在時間大於選擇的時間,時間出錯
       {
        value.IsValid = false;
        str='<font color=red>送花時間出錯!</font>';
        td1.innerHTML=str;      
       }
        else
        {
         value.IsValid = true;
         str="市區必須提前3小時下單,節假日除外";
         td1.innerHTML=str;
         if(AddHours(3)>compdt3 + eval('document.all.RadioButtonList2_' + i).value)//現在時間3小時後大於選擇的時間,來不及準備
         {
          value.IsValid = false;
          str='<font color=red>時間來不及準備,請選擇下一個時間段!</font>';
          td1.innerHTML=str;
         }
         else
         {
          value.IsValid = true;
          str="市區必須提前3小時下單,節假日除外";
          td1.innerHTML=str;
         }
        }
      }
      }
      else
      {
          value.IsValid = true;
          str="市區必須提前3小時下單,節假日除外";
          td1.innerHTML=str;
          }
    
     }

    }return   false;
   }
   function AddHours(hourvalue) //現在時間+N=N幾小時後時間
   {
    HoursToAdd=hourvalue;
    var newdate=new Date();
    var newtimems=newdate.getTime()+(HoursToAdd*60*60*1000);
    newdate.setTime(newtimems);
    return newdate.toLocaleString();
   }

</script>

 <tr bgColor="#ffffff">
        <td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
         align="right" width="30%" height="30"><input type="hidden" runat="server" id="texth" style="WIDTH: 32px; HEIGHT: 22px" size="1">要求<font color="red">送花時間</font>:
        </td>
        <td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 20px; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
         width="70%" colSpan="2" height="30"><asp:textbox id="TextBox6" onfocus="calendar()" runat="server"></asp:textbox>&nbsp;&nbsp;<FONT color="#ff0000">**
          <asp:requiredfieldvalidator id="RequiredFieldValidator5" runat="server" ErrorMessage="必填" ControlToValidate="TextBox6"></asp:requiredfieldvalidator><asp:customvalidator id="CustomValidator1" runat="server" ControlToValidate="TextBox6" ClientValidationFunction="compearday"></asp:customvalidator></FONT></td>
       </tr>
       <tr bgColor="#ffffff">
        <td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
         align="right" width="30%" height="30">如有特殊要求或不在上述時間段請電話聯絡本公司<asp:customvalidator id="Customvalidator3" runat="server" ClientValidationFunction="compeartime" ControlToValidate="RadioButtonList2"></asp:customvalidator></td>
        <td class="table-xia" style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
         width="70%" colSpan="2" height="30">
         <table cellSpacing="0" cellPadding="0" width="100%" border="0">
          <TBODY>
           <tr>
            <td><asp:radiobuttonlist id="RadioButtonList2" runat="server" RepeatDirection="Horizontal" RepeatColumns="6">
              <asp:ListItem Value="10:00:00">8:00-10:00</asp:ListItem>
              <asp:ListItem Value="13:00:00">10:00-13:00</asp:ListItem>
              <asp:ListItem Value="18:00:00">14:00-18:00</asp:ListItem>
              <asp:ListItem Value="21:00:00" Selected="True">21:00前</asp:ListItem>
             </asp:radiobuttonlist></td>
           </tr>
           <TR>
            <td id="td1" height="16">市區必須提前3小時下單,節假日除外</td>
           </TR>
          </TBODY>
         </table>
        </td>
       </tr> 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.