我在windows窗口程序里加了一个定时器,第1000毫秒执行一段程序,程序如下:
int iInterval = 3600000;
DateTime now = DateTime.Now;
DateTime time1 = new DateTime(now.Year, now.Month, now.Day, 10, 30, 0, now.Millisecond);
if( now==time1)//试过datetime.compare(now, time)也不能得到等于0的时候
{
timer1.Enabled = false;
this.Post();
timer1.Interval = iInterval; //设置每小时检测
timer1.Enabled = true;
}
我的意思就是当时间走到10:30:00的时候执行Post这个函数,然后设置定时器的间隔为一小时,但是每次到了10点半的时候都不会执行,我输出了一下,时间转为字符串后看起来都是一样的,但就是不等,还有什么办法可以准确对比两个时间吗?其实精确到秒就可以了,time1最好也是日期类型。
先谢谢大侠啊

解决方案 »

  1.   

    if( now.ToString("HH:mm")==”10:30”)
      

  2.   

    再加入一个变量timeTmp
     DateTime timeTmp = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
    将time1改为
    DateTime time1 = new DateTime(now.Year, now.Month, now.Day, 10, 30, 0);
    然后比较timeTmp和time1就可以了
      

  3.   

    using System;namespace ConsoleApplication1
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Console.ReadLine();
    DateTime now = DateTime.Now;
    DateTime time1 = new DateTime(now.Year, now.Month, now.Day, 10, 30, 0, now.Millisecond);
    Console.WriteLine("Now:\t"+now.ToString()+"  ----  "+now.Ticks.ToString()+"\n");
    Console.WriteLine("time1:\t"+time1.ToString()+"  ----  "+time1.Ticks.ToString()+"\n");
    Console.ReadLine();
    }
    }
    }
    毫秒后面还有4位,所以now和time1不太可能相等
    或者可以这样判断
    now.Ticks-time1.Ticks > -10000 and now.Ticks-time1.Ticks < 10000
      

  4.   

    now.Ticks-time1.Ticks > -10000 && now.Ticks-time1.Ticks < 10000