日期/时间控制
本文关键字:控制 时间 日期 | 更新日期: 2023-09-27 17:52:38
我有一个webform应用程序,计算两个日期之间的时间差,然后以天数,总小时数,总分钟数的格式返回。
我的标记代码如下:<asp:Label ID="Label20" runat="server" CssClass="label">Resolved Date</asp:Label>
<asp:TextBox ID="TextBox14" runat="server" CssClass="textbox" TextMode="Date" OnTextChanged="TextBox14_TextChanged"></asp:TextBox>
现在ontextchanged事件将计算与另一个日期时间文本框的时间差。
我做过这样的事情:
protected void TextBox14_TextChanged(object sender, EventArgs e)
{
// get date from first text box
DateTime dold = Convert.ToDateTime(TextBox1.Text);
DateTime dnew = Convert.ToDateTime(TextBox14.Text);
TimeSpan daydif = (dnew - dold);
double dayd = daydif.TotalDays;
Label27.Text = dayd.ToString();
}
我的问题是,每当没有输出它?Label27没有天数差异值。
是否有其他我不知道的事件触发器?
谢谢你的帮助
我同意Jon Skeet的观点,我将为此目的使用日历控件,您将遇到文本字段的输入验证问题,而您正在处理的日历是Date对象。首先,您可以向页面添加日历字段。
<!-- Old Date -->
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
<!-- New Date -->
<asp:Calendar ID="Calendar2" OnSelectionChanged="TextBox14_TextChanged" runat="server"></asp:Calendar>
然后在你的onchanged方法中,你可以像这样在一行中计算时间跨度,当你可以像这样访问它时,创建另一个对象double来保存你的总天数没有意义。除非你要在很多地方使用它,否则最好创建一个double类型的类型
protected void TextBox14_TextChanged(object sender, EventArgs e)
{
//Might add some quick validation to make sure a date is selected in both calendars.
// Not sure if you are subtracting old from new or new from old but you can sorta that out
Label20.Text = ((TimeSpan)(Calendar2.SelectedDate - Calendar1.SelectedDate)).TotalDays.ToString();
}
请记住,当调用onselection changed时,页面正在刷新,因为数据必须提交到页面,以便服务器端处理发生。Web页面事件不像winforms。