已经有二个DateTime变量:dt和dt2
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(0, 0, 0, 10);
DateTime dt2=dt+ts;  //在现在的时间增加10秒。
然后用一个Timer控件:
private void timer1_Tick(object sender, EventArgs e)
{
dt = DateTime.Now;
if(dt==dt2)
{....
}
问题是:
  dt==dt2总是false;
请问是什么回事?谢谢呀

解决方案 »

  1.   

    那你觉得dt == dt+10什么时候会true呢?
      

  2.   

    我想让dt 10秒钟后和dt2相等。应该怎么作?
      

  3.   

    DateTime dt = DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 0, 10);
    DateTime dt2=dt+ts; 
    private void timer1_Tick(object sender, EventArgs e)
    {
    DateTime dt3 = DateTime.Now;
    if(dt3==dt2)
    {....
    }
      

  4.   

    谢谢 LeoMaya(我是L.W, 这是我的故事) 的热心帮助
     但(dt3==dt2)还是不能为true..没反应55555
      

  5.   

    DateTime dt = DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 0, 10);
    DateTime dt2=dt+ts; 
    private void timer1_Tick(object sender, EventArgs e)
    {
    DateTime dt3 = DateTime.Now;
    if(dt3.ToString()==dt2.ToString())
    {....
    }
      

  6.   

    DateTime dt = DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 0, 10);
    DateTime dt2=dt+ts; 
    private void timer1_Tick(object sender, EventArgs e)
    {
    DateTime dt3 = DateTime.Now;
    if(DateTime.Compare(dt3, dt2) == 0)
    {....
    }
      

  7.   

    谢谢LeoMaya(我是L.W, 这是我的故事) 
    可以了。搞不明白:书上说DateTime可能用“=="或"compare"进行是否相等的比较。但在我这个例子中,怎么不行?为什么还要进行"ToString"啊
    PS:用"<"或">"可以进行判断
      

  8.   

    你知道DateTime可以精确到什么程度么?
    难道你认为你的程序能精确到这个程度?
      

  9.   

    即使是连续取两次Now都不一定相等。何况死个机,抢个线程什么的。
      

  10.   

    if(DateTime.Compare(dt3, dt2) == 0)他小数点后面好几个0哦……
      

  11.   

    你用==比较时间倒是没错,但是那个Timer正好10秒钟后就触发的几率太低了,而且Datetime.Now是带毫秒的。你只能指定一个范围,触发时判断事件是否在这个范围内
      

  12.   

    if (dt.tostring("yyyy-MM-dd HH:mm:ss").substring(0,19)==dt2.tostring("yyyy-MM-dd HH:mm:ss").substring(0,19))
    {
    ……
    }
      

  13.   

    风某认为应该是你的Timer中的间隔时间不能触发你两个时间正好相等,你可以把Timer的间隔时间设短再试
      

  14.   

    这和你比较的时候有关,
    你使用的是Timer控件,但这个控件可能不会正好在10秒后执行.
    所以你的比较往往不能成功.
      

  15.   

    DateTime dt = DateTime.Now;
    TimeSpan ts = new TimeSpan(0, 0, 0, 10);
    DateTime dt2=dt+ts; 
    private void timer1_Tick(object sender, EventArgs e)
    {
    DateTime dt3 = DateTime.Now;
    if(dt3.ToString("yyyyMMddHHmmss")==dt2.ToString("yyyyMMddHHmmss"))
    {....
    }
      

  16.   

    或者定义一个线程让Sleep(10000)后执行你的操作