[英]how to set date in second textbox according to first textbox date in asp.net
我正在一個asp.net應用程序上,我有兩個文本框供選擇兩個日期,例如Fromdate和EndDate。 對於兩個格式為dd / MM / yyyy的文本框,我也有兩個壓延擴展器。 如果我使用日歷擴展器在第一個文本框“ txtFromDate”中選擇任何日期,則它將計算出,如果它比今天的日期小至少7天,則第二個文本框將自動設置為第一個文本框日期之后的7天。 如果今天日期和第一個文本框日期之間的差小於7,則第二個文本框應在第二個文本框中顯示今天日期。 為此,我在第一個文本框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,但顯示的是18 May-18。 怎么解決呢?
明確說明您的格式,而不要使用ToShortDateString()。 請改用以下內容:
.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
試試這個代碼:
String.Format("{0:MM/dd/yyyy}", YourDate);
參考: http : //www.csharp-examples.net/string-format-datetime/
您在這里做錯的一些事情:
datetime.today
屬性為您提供了一個DateTime對象,您無需將其再次轉換為DateTime。 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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.