2015-01-06 4 views
1

Может ли кто-нибудь описать меня, как сравнить два заданных времени с текущим временем?Как сравнить два времени между Firsttime endTime с текущим временем?

У меня есть время начала 11:00 и время окончания 1PM. У меня есть таймер, чтобы тикать только, когда часовой пояс между 11 утра и 1 вечера каждый день.

У меня есть код ниже, но его не работает. Пожалуйста, проверьте.

TimeSpan StartHit = new TimeSpan(11, 0, 0); 
TimeSpan EndHit = new TimeSpan(1, 0, 0); 
if (DateTime.Now.TimeOfDay >= StartHit && DateTime.Now.TimeOfDay <= EndHit) 
{ 
    //my task here 
} 
+1

Если ваш код не работает, сообщите нам _how_, он не работает. Вы получаете какое-либо исключение или сообщение об ошибке, получаете неожиданный результат и т. Д. _It не работает_ является бессмысленным без каких-либо объяснений. –

ответ

2

Использование

TimeSpan EndHit = new TimeSpan(13, 0, 0); 

TimeSpan (1, 0, 0) для 1 утра

3

Вы должны использовать 13 в час, не 1 в вашем EndHit.

TimeSpan StartHit = new TimeSpan(11, 0, 0); 
TimeSpan EndHit = new TimeSpan(13, 0, 0); 
if (DateTime.Now.TimeOfDay >= StartHit && DateTime.Now.TimeOfDay <= EndHit) 
{ 
    //my task here 
} 

TimeOfDay property представляет собой интервал времени, которое прошло с полуночи . Если вы используете 1 в качестве часа, это будет 1 AM не 1 PM.

И, конечно же, TimeSpan не сохраняет эти значения как 1 AM или 1 PM, это просто строковое представление. Он сохраняет их как целочисленные значения как 1 и 13.

1

этот код должен работать нормально:

DateTime time1 = DateTime.Now; 
DateTime time2 = Convert.ToDateTime("11:00:00 AM"); 
DateTime time3 = Convert.ToDateTime("1:00:00 PM"); 

if (DateTime.Compare(time1, time3) < 0 && DateTime.Compare(time1, time2) > 0) 
{ 
} 

Например, для DateTime.Compare (time1, time3), если Время1> time3 он возвращает 1, если time1 < time3 она возвращает -1 и если time1 = time3 он возвращает 0. Надеюсь, это полезно.