我正在通过Windows Forms在C#中制作闹钟应用程序。到目前为止,我为我的时间检查器提供了这个非工作代码部分。
string alarm = this.dateTimePicker1.Text;
if (DateTime.Now.ToString() == alarm)
{
MessageBox.Show("Alarm");
}
DateTimePicker配置为小时,分钟和秒。上面的代码根本没有显示消息框。代码段中的问题在哪里?
另外:有没有更有效的制作闹钟的方法
答案 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");
}