如何从下拉列表中获取时差。我有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 :(得分: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");
}
答案 1 :(得分: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分钟。