我正在尝试在C#中创建一个应用程序 - visual studio 2010.这个应用程序类似于提醒。您将注释放入文本框并使用DateTimePicker
选择何时需要提醒您注意事项。
问题是我不知道该怎么做。
我从DatetimePicker中选择了日期和时间:
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "dd/MM/yyyy HH:mm:ss";
现在我需要将datetimePicker的时间与当前日期和时间进行比较,如果值相同则显示带有一些文本的消息按钮。
我不确定我是否可以使用计时器以及如何比较这些值?这样的事情: - )
string timese = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
string theDay = dateTimePicker1.Value.ToShortDateString();
private void timer1_Tick(object sender, EventArgs e)
{
if (theDay == theDay2)
{
MessageBox.Show ("Reminder");
}
}
答案 0 :(得分:2)
首先不要使用字符串:
DateTime theDay = dateTimePicker1.Value;
private void timer1_Tick(object sender, EventArgs e)
{
if (DateTime.Now.CompareTo(theDay) > 0 ) // checks if now is after theDay
{
theDay = DateTime.MaxValue;
// makes sure there wont be multiple MessageBox due to event queuing
// you could also just stop the timer here
MessageBox.Show ("Reminder");
}
}
建议不要使用日期的完全匹配(==),因为计时器可能跳过确切的时间而且它永远不会成立。
编辑:我的比较是错误的,现在应该是正确的
答案 1 :(得分:0)
你可以比较一下:
if(dateTimePicker1.Value==DateTime.Now)
两者都是日期时间。
但上面的代码存在一个问题。它将时间与毫秒进行比较,可能永远不会相同。因此,您可以将代码更改为
if(dateTimePicker1.Value-DateTime.Now).TotalSeconds<2)
(DateTime1 - DateTime2)是这个类在MSDN
上的时间更长答案 2 :(得分:0)
如果您想构建提醒应用程序而不是使用日期时间比较,最好使用像Quartz.NET这样的开源计划程序。
使用非常简单,Quartz.NET tutorials非常好。
您只需要定义每个提醒所需的CRON Triggers,Quartz.NET将负责在触发发生时触发事件。如果您可以执行任何操作,例如发送邮件,设置值等等......
Quartz的最佳之处在于,由于它是一个调度程序,您甚至可以非常轻松地安排定期提醒。我已经成功地在三种官方产品中使用它而没有任何麻烦。