C# - 闹钟 - 两倍

时间:2016-12-06 20:37:42

标签: c# datetime alarm

我正在通过Windows Forms在C#中制作闹钟应用程序。到目前为止,我为我的时间检查器提供了这个非工作代码部分。

string alarm = this.dateTimePicker1.Text;

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

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

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

4 个答案:

答案 0 :(得分:2)

由于它是一个闹钟,你会想要进行比较,包括时间。也就是说,比较DateTime对象的.Ticks值:

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

根据您使用的DateTimePicker的工作原理,您可能需要在比较之前检查Value for null。

答案 1 :(得分:2)

试试这个让你前进:

需要比较小时和分钟。

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");

    }
}

答案 2 :(得分:0)

根据需要修改以下代码。我发现比较字符串是一种不好的方法。

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

答案 3 :(得分:0)

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

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