你好,我的标签无法随时间更新。 应该在某些时间间隔更改数字。当它是上午7:30-上午8:15时,应该将标签文本更改为“ 1”。
这是负责此操作的代码段:
public void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
label2.Text = DateTime.Now.ToLongTimeString();
label1.Text = DateTime.Now.ToLongDateString();
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
public void timer1_Tick(object sender, EventArgs e)
{
int Hour = DateTime.Now.Hour();
int Minute = DateTime.Now.Minute();
if (Hour >= 6 && Minute >= 40 && Hour <= 7 && Minute <= 25)
{
label5.Text = "0";
}
else if (Hour >= 7 && Minute >= 30 && Hour <= 8 && Minute <= 15)
{
label5.Text = "1";
}
else if (Hour >= 8 && Minute >= 20 && Hour <= 9 && Minute <= 5)
{
label5.Text = "2";
else
{
label5.Text = "nothing";
}
}
答案 0 :(得分:2)
就像其他人提到的那样,设置您的条件以使它们永远不会成立:分钟不能大于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)
答案 1 :(得分:1)
Your conditions are always false, take this one for instance:
if (Hour >= 6 && Minute >= 40 && Hour <= 7 && Minute <= 25)
Minute >= 40 && Minute <= 25
will always be false as one of them can be true at a time.
I think you are looking for something like:
if ((Hour = 6 && Minute >= 40) || (Hour = 7 && Minute <= 25))