Member 10525430 Ответов: 1

C# управление сравнением времени в цикле


Привет,

Я даю свой фрагмент кода вниз.Моя проблема в том, что когда я запускаю этот код, я все время получаю ложь. Как я могу это исправить?

While(!isStop)
{
	var isReportOnly = false;
	var isInReportPeriod = false;

	DateTime dtStart = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 22, 0, 0);
	DateTime dtStop = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 06, 0, 0);
	if (DateTime.Now > dtStart && DateTime.Now < dtStop)
	{
		isInReportPeriod = true;
		log.Add( DateTime.Now.ToString() + "=True\n");
	}
	else
	{
		isInReportPeriod = false;
		log.Add(DateTime.Now.ToString() + "=False\n");
	}
}


Что я уже пробовал:

Как я могу исправить эту проблему для time comprison в цикле

1 Ответов

Рейтинг:
1

OriginalGriff

Хм.
Начало-22: 00, Остановка-06: 00.
Чтобы войти в систему TRUE, вам нужно, чтобы текущее время было как после 22: 00, так и до 06:00 в тот же день...

Возможно, вы неправильно рассчитали время начала и остановки?

Но в любом случае не делайте этого так: никогда не читайте время больше одного раза, это может вызвать проблемы, когда день (или, что еще хуже, месяц или год) меняется.

DateTime now = DatetIme.Now;
DateTime start = now.Date.AddHours(6);
DateTime stop = now.Date.AddHours(22);
if (now > start && now < stop)
   {
   ...