我已經使用了三個文本框控件,並且在第一個文本框中指定了開始時間,在第二個文本框中我指定了結束時間,並且當控件移動到下一個文本框時,應該自動計算持續時間。我已經看到了一些使用時間跨度的建議,但它不能100%完美地工作。例如,如何計算從文本框中指定的開始和結束時間的持續時間?
如果開始時間= 10.00AM且結束時間= 03:00PM,則持續時間計算爲5小時正確,但如果開始時間= 03:00PM且結束時間= 01:00AM,則持續時間= -14:00以錯誤的方式。我期望的輸出是順時針方向= 10小時,但時間逆時針方向計算,輸出錯誤爲-14:00。如何克服這種情況。我發佈了我在下面使用的代碼。
<div>
<asp:Label ID="lblStartTime" runat="server" Text="StartTime"></asp:Label>
<asp:TextBox ID="txtstrtime" runat="server" Width="88px" AutoPostBack="True"
Height="25px" ontextchanged="txtstrtime_TextChanged"></asp:TextBox>
<asp:MaskedEditExtender ID="txtstrtime_MaskedEditExtender" runat="server"
TargetControlID="txtstrtime" Mask="99:99" MessageValidatorTip="true"
MaskType="Time" InputDirection="RightToLeft" Enabled="true" AcceptAMPM="true">
</asp:MaskedEditExtender>
<asp:Label ID="lblEndTime" runat="server" Text="EndTime"></asp:Label>
<asp:TextBox ID="txtendtime" runat="server" Width="97px" Height="25px"
AutoPostBack="True" ontextchanged="txtendtime_TextChanged">
</asp:TextBox>
<asp:MaskedEditExtender ID="txtendtime_MaskedEditExtender" runat="server"
Mask="99:99" MessageValidatorTip="true" MaskType="Time"
InputDirection="RightToLeft" Enabled="true" TargetControlID="txtendtime"
AcceptAMPM="true">
</asp:MaskedEditExtender>
<asp:Label ID="lblduration" runat="server" Text="Duration"></asp:Label>
<asp:TextBox ID="txtduration" runat="server" Width="112px" Height="27px"
ontextchanged="txtduration_TextChanged" AutoPostBack="True"></asp:TextBox>
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
</div>
和後面的代碼是
protected void txtendtime_TextChanged(object sender, EventArgs e)
{
try
{
DateTime startTime, endTime;
startTime = Convert.ToDateTime(txtstrtime.Text);
endTime = Convert.ToDateTime(txtendtime.Text);
var timeDiff = new TimeSpan(endTime.Ticks - startTime.Ticks);
txtduration.Text = Convert.ToString(timeDiff);
txtduration.Focus();
}
catch
{
}
}
decimal actualHours = Math.Round(span.TotalHours,2);這條線對我不起作用。 – Ezhilan 2014-11-24 08:07:40
@Ezhilan你不是在說什麼? – DevEstacion 2014-11-24 08:09:18
不能隱式地將類型'double'轉換爲'decimal' – Ezhilan 2014-11-24 08:12:33