找出日期是否落在特定范围内的最佳方法是什么?

时间:2010-03-09 08:54:13

标签: c# datetime

我尝试了以下

DateTime start = Convert.ToDateTime(TextBox1.Text);
DateTime end = Convert.ToDateTime(TextBox2.Text);
if (DateTime.Now.Date == start.Date || DateTime.Now.Date == end.Date || (DateTime.Now >= start.Date && DateTime.Now <= end.Date))
{
   lblResult.Text = "true";
}
else
{
   lblResult.Text = "false";
}

这将验证日期范围是否也是一天。有什么方法可以减少上面的条件数量?

3 个答案:

答案 0 :(得分:3)

DateTime start = Convert.ToDateTime(TextBox1.Text);
DateTime end = Convert.ToDateTime(TextBox2.Text);
DateTime now = DateTime.Now;
if (now >= start.Date && now <= end.Date)
{
   lblResult.Text = "true";
}
else
{
   lblResult.Text = "false";
}

答案 1 :(得分:1)

DateTime dateStart = Convert.ToDateTime(TextBox1.Text); 
DateTime dateEnd = Convert.ToDateTime(TextBox2.Text); 

if (DateTime.Now.Date == dateStart .Date || DateTime.Now.Date == dateEnd .Date || (DateTime.Now >= dateStart .Date && DateTime.Now <= dateEnd .Date)) 
{ 
   lblResult.Text = "true"; 
} 
else 
{ 
   lblResult.Text = "false"; 
} 

在我看来,你可以省略这两项检查:

DateTime.Now.Date == dateStart .Date || DateTime.Now.Date == dateEnd .Date

DateTime.Now >= dateStart .Date && DateTime.Now <= dateEnd .Date

也在检查你的开始日期是今天的日期。

&lt; =意味着更小或相同。

答案 2 :(得分:1)

只需要最后一个编码,您可以在转换时使用DateTime的Date部分。使用Now的Date部分,否则如果“start”和“end”字符串相同 - 条件返回false(因为当仅采用DateTime的Date部分时,时间表示为00:00:00 .. 。)

DateTime start = Convert.ToDateTime(TextBox1.Text).Date;
DateTime now = DateTime.Now.Date;
DateTime end = Convert.ToDateTime(TextBox2.Text).Date;
if (now >= start && now <= end)
{
   lblResult.Text = "true";
}
else
{
   lblResult.Text = "false";
}

如果您想验证范围只包含一天,只需删除“小于”/“大于”条件:

(now = start && now = end)

因此确保“now”与“start”和“end”的日期相同,但这并非真正的“在范围内”检查。