Каков наилучший способ узнать, попадает ли дата в определенный диапазон? - PullRequest
2 голосов
/ 09 марта 2010

Я попробовал следующее

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 ]

3 голосов
/ 09 марта 2010
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 голос
/ 09 марта 2010

Требуется только последняя кодировка, и вы можете взять часть Date в DateTime при конвертации. Используйте часть Date для Now, в противном случае, если строки «start» и «end» совпадают - условие возвращает false (потому что при использовании только части Date DateTime время представляется как 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)

, таким образом, удостоверившись, что «сейчас» совпадает с датой «начало» и «конец», но на самом деле это не проверка «попадает в диапазон».

1 голос
/ 09 марта 2010
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"; 
} 

По моему мнению, вы можете пропустить эти 2 чека:

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

с

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

также проверяет, совпадает ли ваша начальная дата с сегодняшней датой.

<= означает меньшее или одинаковое. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...