2010-01-26 42 views
0

如何从下拉列表中获取时差。我有3个下拉列表,用于表示员工的时间,分钟,上午/下午时间。我的要求是计算员工的工作时间。我可以使用比较验证器吗?如果是的话,如何使用这个? 我的aspx代码如下所示获取时差

<table cellpadding="5" cellspacing="0" border="0" width="100%"> 
    <tr> 
     <td align="left" valign="middle"> 
      <asp:dropdownlist id="ddlTimeInHour" width="45px" runat="server" tabindex="7"> 
       <asp:ListItem>01</asp:ListItem> 
       <asp:ListItem>02</asp:ListItem> 
       <asp:ListItem>03</asp:ListItem> 
       <asp:ListItem>04</asp:ListItem> 
       <asp:ListItem>05</asp:ListItem> 
       <asp:ListItem>06</asp:ListItem> 
       <asp:ListItem>07</asp:ListItem> 
       <asp:ListItem>08</asp:ListItem> 
       <asp:ListItem>09</asp:ListItem> 
       <asp:ListItem>10</asp:ListItem> 
       <asp:ListItem>11</asp:ListItem> 
       <asp:ListItem>12</asp:ListItem> 
      </asp:dropdownlist> 
      <asp:dropdownlist id="ddlTimeInMinute" width="45px" runat="server" tabindex="8"> 
       <asp:ListItem>00</asp:ListItem> 
       <asp:ListItem>05</asp:ListItem> 
       <asp:ListItem>10</asp:ListItem> 
       <asp:ListItem>15</asp:ListItem> 
       <asp:ListItem>20</asp:ListItem> 
       <asp:ListItem>25</asp:ListItem> 
       <asp:ListItem>30</asp:ListItem> 
       <asp:ListItem>35</asp:ListItem> 
       <asp:ListItem>40</asp:ListItem> 
       <asp:ListItem>45</asp:ListItem> 
       <asp:ListItem>50</asp:ListItem> 
       <asp:ListItem>55</asp:ListItem> 
       <asp:ListItem>60</asp:ListItem> 
      </asp:dropdownlist> 
      <asp:dropdownlist id="ddlTimeInAMPM" width="45px" runat="server" tabindex="9"> 
       <asp:ListItem>AM</asp:ListItem> 
       <asp:ListItem>PM</asp:ListItem> 
      </asp:dropdownlist> 
     </td> 
    </tr> 
    <tr> 
     <td align="left" valign="middle"> 
      <asp:dropdownlist id="ddlTimeOutHour" width="45px" runat="server" tabindex="10"> 
       <asp:ListItem>01</asp:ListItem> 
       <asp:ListItem>02</asp:ListItem> 
       <asp:ListItem>03</asp:ListItem> 
       <asp:ListItem>04</asp:ListItem> 
       <asp:ListItem>05</asp:ListItem> 
       <asp:ListItem>06</asp:ListItem> 
       <asp:ListItem>07</asp:ListItem> 
       <asp:ListItem>08</asp:ListItem> 
       <asp:ListItem>09</asp:ListItem> 
       <asp:ListItem>10</asp:ListItem> 
       <asp:ListItem>11</asp:ListItem> 
       <asp:ListItem>12</asp:ListItem> 
      </asp:dropdownlist> 
      <asp:dropdownlist id="ddlTimeOutMinute" width="45px" runat="server" tabindex="11"> 
       <asp:ListItem>00</asp:ListItem> 
       <asp:ListItem>05</asp:ListItem> 
       <asp:ListItem>10</asp:ListItem> 
       <asp:ListItem>15</asp:ListItem> 
       <asp:ListItem>20</asp:ListItem> 
       <asp:ListItem>25</asp:ListItem> 
       <asp:ListItem>30</asp:ListItem> 
       <asp:ListItem>35</asp:ListItem> 
       <asp:ListItem>40</asp:ListItem> 
       <asp:ListItem>45</asp:ListItem> 
       <asp:ListItem>50</asp:ListItem> 
       <asp:ListItem>55</asp:ListItem> 
       <asp:ListItem>60</asp:ListItem> 
      </asp:dropdownlist> 
      <asp:dropdownlist id="ddlTimeOutAMPM" width="45px" runat="server" tabindex="12"> 
       <asp:ListItem>AM</asp:ListItem> 
       <asp:ListItem>PM</asp:ListItem> 
      </asp:dropdownlist> 
     </td> 
    </tr> 
</table> 
+0

比较什么?什么是开始日期,它是动态还是静态?请给我们更多的信息。 – Tarik 2010-01-26 06:15:04

回答

1

你应该试试这个:

string inTime = 
    String.Format("{0}:{1} {2}", 
     ddlTimeInHour.Text, 
     ddlTimeInMinute.Text, 
     ddlTimeInAMPM.Text); 

string outTime = 
    String.Format("{0}:{1} {2}", 
     ddlTimeOutHour.Text, 
     ddlTimeOutMinute.Text, 
     ddlTimeOutAMPM.Text); 

TimeSpan difference = 
    DateTime.Parse(outTime) - 
    DateTime.Parse(inTime); 

而且注意到你有分钟下拉式为“60”。你不能工作一小时 60分钟。

+0

感谢您的信息 – MAC 2010-01-26 09:26:59

1

我添加一个按钮和一个处理程序,以计算差值。我不认为你可以使用CompareValidator。如果您需要的代码验证的一部分,那么我会用的CustomValidator

protected void Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim TimeIn As DateTime = CDate(ddlTimeInHour.Text & ":" & ddlTimeInMinute.Text) 
     If ddlTimeInAMPM.Text = "PM" Then 
      TimeIn = DateAdd(DateInterval.Hour, 12, TimeIn) 
     End If 

     Dim TimeOut As DateTime = CDate(ddlTimeOutHour.Text & ":" & ddlTimeOutMinute.Text) 
     If ddlTimeOutAMPM.Text = "PM" Then 
      TimeOut = DateAdd(DateInterval.Hour, 12, TimeOut) 
     End If 

     Dim DiffMins As Integer = DateDiff(DateInterval.Minute, TimeIn, TimeOut) 
     Response.Write("The difference is " & DiffMins & " mins") 
    End Sub 

C#等效:

protected void Button1_Click(object sender, System.EventArgs e) 
{ 
    DateTime TimeIn = (System.DateTime)ddlTimeInHour.Text + ":" + ddlTimeInMinute.Text; 
    if (ddlTimeInAMPM.Text == "PM") { 
     TimeIn = DateAdd(DateInterval.Hour, 12, TimeIn); 
    } 

    DateTime TimeOut = (System.DateTime)ddlTimeOutHour.Text + ":" + ddlTimeOutMinute.Text; 
    if (ddlTimeOutAMPM.Text == "PM") { 
     TimeOut = DateAdd(DateInterval.Hour, 12, TimeOut); 
    } 

    int DiffMins = DateDiff(DateInterval.Minute, TimeIn, TimeOut); 
    Response.Write("The difference is " + DiffMins + " mins"); 
} 
+0

请给我C#代码..抱歉给您带来不便。 – MAC 2010-01-26 06:18:51

+0

@Dilse:您可以使用此工具将.NET CLR代码转换为彼此:http://bit.ly/7A7kU9 – Tarik 2010-01-26 06:30:09