获得时差

时间:2010-01-26 05:59:21

标签: c# asp.net

如何从下拉列表中获取时差。我有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>

2 个答案:

答案 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分钟。