【发布时间】:2013-11-05 05:12:07
【问题描述】:
我有 2 个日期时间选择器,如果用户选择日期,我想在文本框中显示它们之间的天数。我的代码的问题是它没有给我正确的答案,而且时间跨度似乎没有工作..我不知道我哪里出错了,这就是我寻求帮助的原因。 我希望解释得更好,请多多包涵,这是我第一次来这个网站,所以我不熟悉控件,发送东西和更新 当我选择不同的日期时,它会给我答案 10.999998008713 天而不是 11 天,我不知道我是否需要做数学综述
private void btnCalc_Click(object sender, EventArgs e)
{
DateTime start = ArrivalDate.Value;
DateTime finish = DepartureDate.Value;
TimeSpan numberOfNights = finish-start;
double TotalDays= numberOfNights.Days;
txtBoxNum.Text = (numberOfNights.ToString());
}
private void ArrivalDate_ValueChanged(object sender, EventArgs e)
{
DepartureDate.Value = ArrivalDate.Value.AddDays(1);
}
private void DepartureDate_ValueChanged(object sender, EventArgs e)
{
// setting messagebox to a sensible default message if no date or wrong date picked
if (DepartureDate.Value < ArrivalDate.Value)
{
MessageBox.Show("Cannot be less than previous date");
DepartureDate.Value = ArrivalDate.Value.AddDays(1);
}
else
{
double Days = (DepartureDate.Value - ArrivalDate.Value).TotalDays;
txtBoxNum.Text = Days.ToString();
return;
【问题讨论】:
-
我知道您是 SO 新手。只是为了让您知道,您应该更新您的original question,而不是询问新的是否是针对同一问题。您可能还想阅读How to Ask
-
TimeSpan 类是你想要的。
-
DateTime start = ArrivalDate.Value.Date;DateTime finish = DepartureDate.Value.Date;试试这个 -
感谢您的建议,但它的显示和回答就像 10.00:00:00 而不是 10 天,您知道这是为什么吗?
-
这是一个时间跨度。你必须使用
TotalDays.ToString()而不是numberOfNights.ToString()