我有2个日期时间选择器,如果用户选择日期,我想在文本框中显示它们之间的天数。
我的代码存在的问题是它没有给我正确答案,而TimeSpan
似乎无效。
当我选择不同的日期时,它会给我回答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)
{
if (DepartureDate.Value < ArrivalDate.Value)
{
MessageBox.Show("Cannot be less than previous date");
DepartureDate.Value = ArrivalDate.Value.AddDays(1);
snip...
}
}
答案 0 :(得分:1)
我不知道我是否需要做数学综合
我们也不是。 10.999998008713天是大约10天,23小时,59分59秒。你想把它算作11天吗?如果是这样的话,10天,23小时,59分钟和58秒呢?在某些时候,你将不得不决定10天到11天之间的截止时间。这可能取决于您的业务规则,我们不知道。
此外,numberOfNights.Days
是numberOfNights
值的日期组成部分;那么对于2013年11月4日那将是4.您确定这是您想要的吗?您不希望numberOfNights.TotalDays
,这是您finish
和start
之间经过的时间吗?
答案 1 :(得分:0)
这个人做了伎俩
int TotalDays= numberOfNights.Days;
txtBoxNum.Text = ((int)Math.Ceiling(numberOfNights.TotalDays)).ToString();