C# - 闹钟 - 两次相同

C# - Alarm clock - Are two times the same

我正在通过 Windows Forms 在 C# 中制作一个闹钟应用程序。到目前为止,我的时间检查器有这段无法工作的代码。

string alarm = this.dateTimePicker1.Text;

if (DateTime.Now.ToString() == alarm)
{
    MessageBox.Show("Alarm");
}

DateTimePicker 配置为小时、分钟和秒。上面的代码根本不显示消息框。片段中的问题在哪里?

另外:有没有更有效的闹钟制作方法

根据需要修改以下代码。我发现比较字符串不是解决这个问题的好方法。

DateTime alarm = this.dateTimePicker1.Value.Date;
if (DateTime.Compare(DateTime.Now.Date, alarm) == 0) { 
     MessageBow.Show("Alarm"); }

因为它是一个闹钟,所以您需要进行包括时间在内的比较。也就是说,比较 DateTime 对象的 .Ticks 值:

if(DateTime.Now.Ticks >= this.DateTimePicker1.Value.Ticks)
{
    // Sound the alarm
}

根据您使用的 DateTimePicker 的工作方式,您可能需要在比较之前检查值为 null。

问题是您正在寻找完全匹配。相反,您应该查看闹钟时间是否已过(因此“>=”)。此外,字符串比较不适用于日期时间。您需要比较 date/times:

        string alarm = this.dateTimePicker1.Value;
        if (DateTime.Now() >= alarm)
        {
            MessageBox.Show("Alarm");
        } 

试试这个让你继续:

需要比较小时和分钟。

private void CheckTime()
{
    clock.Text = DateTime.Now.ToString("hh:mm:ss");
    date.Text = DateTime.Now.ToLongDateString();
    DateTime alarm = this.dateTimePicker1.Value;
    DateTime currentTime = DateTime.Now;
    if (alarm.Hour == currentTime.Hour && alarm.Minute == currentTime.Minute)
    {
       timer1.Enabled = false;
       MessageBox.Show("Alarm");

    }
}