Как уже упоминали другие, ваши условия установлены так, что они никогда не могут быть истинными: минуты не могут быть больше 40 И меньше 25.
Чтобы исправить ваш код как есть, вам нужно сгруппировать условия, чтобы вы сравнивали пары часов и минут, где пары оцениваются первыми:
if ((Hour >= 6 && Minute >= 40) && (Hour <= 7 && Minute <= 25))
Однако вы можете рассмотреть использование метода TimeSpan.Parse
(или метода DateTime.Parse
вместе со свойством TimeOfDay
) для сравнения времени, например, как показано ниже, что, я думаю, более читабельно.
Я смешал использование TimeSpan.Parse
и DateTime.Parse
, чтобы вы могли видеть, как они отличаются. Вы должны просто выбрать один или другой (хотя важно отметить, что AM / PM - это культура США. Если вы планируете использовать это в других культурах, тогда предпочтителен метод TimeSpan
+ 24-часовой формат):
public void timer1_Tick(object sender, EventArgs e)
{
TimeSpan currentTime = DateTime.Now.TimeOfDay;
if (currentTime >= DateTime.Parse("6:40 AM").TimeOfDay &&
currentTime <= DateTime.Parse("7:25 AM").TimeOfDay)
{
label5.Text = "0";
}
else if (currentTime >= TimeSpan.Parse("07:30") &&
currentTime <= TimeSpan.Parse("08:15"))
{
label5.Text = "1";
}
else if (currentTime >= TimeSpan.Parse("08:20") &&
currentTime <= TimeSpan.Parse("09:05"))
{
label5.Text = "2";
}
else
{
label5.Text = "nothing";
}
}
Обратите внимание, что если вы используете TimeSpan.Parse
, вы должны использовать 24-часовое время. Так что "2:00 PM"
будет представлено как "14:00"
. Если вам это не нравится, используйте DateTime.Parse
, а затем вызовите свойство TimeOfDay
:
// Instead of this
if (currentTime >= TimeSpan.Parse("18:40")
// You could write this
if (currentTime >= DateTime.Parse("6:40 PM").TimeOfDay)