2010-03-09 2 views
2

Я попробовал следующееКаков наилучший способ узнать, подходит ли дата в определенном диапазоне?

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"; 
} 

Это проверяет, если диапазон дат один день также. Любой способ уменьшить количество условий выше?

ответ

1

Необходимо только последнее кодирование, и вы можете использовать Date Date of 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) 

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

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"; 
} 
+0

опечатка сверху && сейчас. – Younes

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"; 
} 

На мой взгляд, вы можете оставить эти 2 проверки:

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

так

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

также проверка Wheter ваш StartDate падает на сегодняшний день.

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

Смежные вопросы