c# - 根据当前时间更改标签
问题描述
您好,我遇到了一个问题,我的标签不会随时间更新。它应该以特定的时间间隔更改数字,例如。当它是上午 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";
}
}
解决方案
正如其他人所提到的,您的条件设置为永远不会为真:分钟永远不能大于 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)
推荐阅读
- jquery - 为什么在 jquery 滑块的开头显示空白图像
- ios - 在 Swift App 中使用 pipe() 将 stdout 重定向到 textView (仅在模拟器中运行,而不是本机)
- ionic-framework - 离子4中未显示模态框
- assembly - 如何访问程序集 x86 中的结构字段?
- java - 如何使用spring和mockito获取被测对象的字段
- javascript - 聚焦任何类型元素的最佳方式
- ruby-on-rails - Docker 中的 Rails 长时间等待
- c++ - 模板参数的显式指定参数无效,即 constexpr
- android - 自定义视图在使用时产生数据绑定错误
- python - 如何从 API 调用访问数字数据?