//取出该用户名的 登陆次数和时间
      if(count > 3 && newtime > oldtime)
      {count=0 }//数据库计数清0
     
      if (count > 3 && newtime < oldtime) //对比时间 现在的时候是否大于回答错误时间
            {
          // msg:您当天回答问题次数超过3,24小时后再试
            }
      else
            {
                // 执行回答
                if (true)  //填写正确
                {
                    //允许改密码
                    
                }
                else
                {  ///msg您输入有误;
                    //数据库回答次数加1  (通过取出来现在数字加1实现)
                   
                    {
                  //记录回答实时间; 该用什么数据类型? 实际插入时间是现在的24小时后 oldtime
                    }
                }
            }
     
   比如现在系统时间是2009/1/6 17:58:05 从datetime.now() 获得
  那么怎么样让他变成24时后的时间?先把时间转成字符行?然后读取多少为+24取余数?
  有没有简单的方法,请各位指点一下,除了这个问题如果逻辑上有什么不合理大家也可帮我指出来!
  其实还有就是如果客户更改了自己的系统时间怎么办?除了datetime.now() 还能用别的获取标准时间吗?

解决方案 »

  1.   

    数据库一般都有时间函数的,比如sqlserver的select getdate(),orale的select sysdate from dual;
      

  2.   

    DateTime dt1 = Convert.ToDateTime("2009/1/6 17:58:05").AddHours(24);
      

  3.   

    而且c#里面的now()方法调用的是我服务器本地的时间,其实我的担心没必要。对吧
      

  4.   

    System.DateTime.Now.AddHours(24);
      

  5.   

    我整理的一个逻辑,你看看吧
    取出该用户名的 错误次数count和最近一次密码输错时间lasttimeif ((now - lasttime) >= 24小时)//now:现在时间;     lasttime:最近一次密码输错时间
    {
        count = 0 并更新数据库;}
    if (count >= 3)
    {
        msg:已输错3次,24小时后再修改;
        return;
    }   
    else
    {
        回答问题;
        if (true)  //填写正确
        {
            允许改密码;
            count = 0 并更新数据库;
        }
        else
        {
            msg您输入有误;
            更新数据库count + 1,lasttime = now;
        }
    }
      

  6.   

    担心时间同步问题,可以将lasttime改成时间间隔,也即:从数据库获取现在时间和上次输错时间的差值,判断这个差值是不是大于24
      

  7.   

    System.DateTime.Now.AddHours(-24);  这样会咋样?前一天的?
      

  8.   

    System.DateTime.Now.AddHours(24); 
    晕,才看到上面都有答案了,哎,顶一下吧