如何根据asp.net中的第一个文本框日期在第二个文本框中设置日期

时间:2018-05-31 11:02:52

标签: c# asp.net

我正在开发一个asp.net应用程序,我有两个文本框供选择,两个日期为Fromdate和EndDate。我还为两个文本框提供了两个日历扩展器,其格式为dd / MM / yyyy。如果我在第一个文本框中选择任何日期" txtFromDate"使用日历扩展器然后它将计算如果它比今天日期小7天,那么第二个文本框将自动设置为第一个文本框日期之后的7天。如果今天日期和第一个文本框日期之间的差异小于7,那么第二个文本框应该在第二个文本框中显示今天的日期。为此,我在第一个textbox textchanged事件

上使用了以下代码
DateTime dt1, dt2, dt3;

dt1 = Convert.ToDateTime(txtStartDate.Text);
dt2 = Convert.ToDateTime(DateTime.Today);
dt3 = dt1.AddDays(7);
TimeSpan s = dt2 - dt1;
int x = (int)s.TotalHours;
x = x / 24;
if (x >= 7)
{
    txtEndDate.Text = dt3.ToShortDateString();
}
else
{
    txtEndDate.Text = dt2.ToShortDateString();
}

如果我选择22/05/2018,那么第二个文本框应显示29/05/2018,但它显示的是29-May-18。怎么解决?

3 个答案:

答案 0 :(得分:1)

明确说明您的格式,而不是使用ToShortDateString()。请改用以下内容:

.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

试用此代码:

String.Format("{0:MM/dd/yyyy}", YourDate); 

参考:http://www.csharp-examples.net/string-format-datetime/

答案 2 :(得分:0)

这里你做错了几件事:

  • datetime.today属性为您提供了一个不需要的DateTime对象 再将其转换为DateTime。
  • 要获得两个日期之间的天数,您无需获得总小时数,然后除以24,您只需使用TotalDays属性。
  • 最好使用解析而不是Convert.ToDateTime来避免FormatException

因此修改后的代码如下:

var diffInDays = (dt2-dt1).TotalDays;   
if (diffInDays >= 7)
{
     txtEndDate.Text = dt3.ToShortDateString();
}
else
{
     txtEndDate.Text = dt2.ToShortDateString();
}

如果您遇到的问题是txtEndDate中显示的日期格式,那么您可以使用.ToString("Format-here"),就像其他答案所示。例如:txtEndDate.Text = dt2.ToString("dd/MM/yyyy");