有点笨的办法,不知可行不
DateTime1 DateTime2分别取年,月(假设两个时间为20011-7-1 20:11 ,2008-1-5 20:33)
//取年
string tmp1=DateTime1.tostring("yy");
string tmp2=DateTime2.tostring("yy");
//取月
string m1=DateTime1.tostring("MM");
string m2=DateTime2.tostring("MM");
//数值转换
tmp1=convert.toint32(tmp1);
tmp2=convert.toint32(tmp2);
m1=convert.toint32(m1);
m2=convert.toint32(m2)
//
没问题的应该得出:
tmp1=2007;
tmp2=2008;
m1=11;
m2=1;
年的相差大于0的肯定禁止.月的相差>=2同理
想~如此,lz可试下

解决方案 »

  1.   

    tostring("yy")改好tostring("yyyy")好点,这样可取2007四位,好相减点
      

  2.   

    数值转换时好像上面的不得的....lz可以找下string转成int的方法...
      

  3.   

    如果超过2个月 就是60天 就禁止登陆==========答案自己都说了,晕TimeSpan span =DateTime1 - DateTime2;
    if( span.TotalDays > 60 ) {
         // ...
    }
      

  4.   

    还有 span.TotalDays > 60 你觉得有可能成立吗?
      

  5.   

    public string Login(string UserId, string UserPwd)
        {
            string Temp;
                    string TempSql = "select LastLogon from ironusers where UserId = '" + UserId + "'";
            using (System.Data.Odbc.OdbcDataAdapter da = new  System.Data.Odbc.OdbcDataAdapter(TempSql, Conn))
            {
                DataSet ds = new DataSet();
                da.Fill(ds);
                Temp = Convert.ToString(ds.Tables[0].Rows[0][0]);
                return Temp;
            }
        }public bool IsLogin()
        {        ASIUser a = new ASIUser();
            string UserId = this.Request.Form["username"].ToString();
            string UserPwd = this.Request.Form["password1"].ToString();        string b = a.Login(UserId, UserPwd);
            string StrLastLoginTime = Convert.ToDateTime(b).ToString("MM-dd-yyyy   hh-mm-ss");
            string LastYear = StrLastLoginTime.Substring(6, 4);
            string LastMonth = StrLastLoginTime.Substring(0, 2);
            string LastDay = StrLastLoginTime.Substring(3, 2);
            string StrLocalSystemTime = Convert.ToDateTime(DateTime.Now).ToString("MM-dd-yyyy   hh-mm-ss");
            string LocalYear = StrLocalSystemTime.Substring(6, 4);
            string LocalMonth = StrLocalSystemTime.Substring(0, 2);
            string LocalDay = StrLocalSystemTime.Substring(3, 2);
            if (Convert.ToInt32(LocalYear) - Convert.ToInt32(LastYear) == 0)
            {
                if (Convert.ToInt32(LocalMonth) - Convert.ToInt32(LastMonth) > 2)
                {
                    return false;
                }
                else
                {
                    return true;
                }            
            }
            else
            {
                if (Convert.ToInt32(LocalYear) - Convert.ToInt32(LastYear) == 1  && Convert.ToInt32(LocalYear) - Convert.ToInt32(LastYear) > 1 && Convert.ToInt32(LocalMonth) - Convert.ToInt32(LastMonth) > -2)
                {
                    return false;
                }
                else
                {
                    return true;
                }        }
        }
    本人这样写的 是最苯的办法
      

  6.   

    DateTime dt1,dt2
    DateTime有三个属性 Year,Month,Day
    (dt1.Year-dt2.Year)*365+(dt1.Month-dt2.Month)*30+(dt1.Day-dt2.Day)>60
      

  7.   

    晕 问题已解决不过楼上的 你 2个星我也要说 >60天的条件有很多 就是2个月 也有可能是年不一样 但是还没到 2个月 如果象你这样做 早垮了===========要你作为你的 PM, 不用看到你下面一堆的”解决方案“,都跨了
    ......
    还有 span.TotalDays > 60 你觉得有可能成立吗?===========为何不会成立,那么你说下面这个结果是多少?        DateTime dt1 = DateTime.Parse("2007-6-1");
            DateTime dt2 = DateTime.Parse("2007-8-1");
            TimeSpan span = dt2 - dt1;
            double d = span.TotalDays; // 若按公历表示,难道不是 61 ?????当然,经得岂测试的代码应该是  
            if(Math.Abs(span.TotalDays) > 60) { // ....
    ==================要学会实践,要学会看文档,TimeSpan
    表示一个时间间隔。TimeSpan.TotalDays
    获取以整天数和天的小数部分表示的当前 TimeSpan 结构的值。 ....
     
      

  8.   

    我如果没有测试当然不会说了 在我做的项目里 span.TotalDays > 60 一辈子都不可能成立 不可能大于30 时间规范不一样  不是通用
      

  9.   

    LZ 的 .net fx 是火星人开发的?两个时间点的差距不可能大于 60 天? 不可能大于 30 天?
      

  10.   

    ……这样也喊救命,楼主有点小题大做了吧……Jinglecat说得对,.NET提供现成的方法可以用。不需要自己写N行代码另行判断了。
      

  11.   

    DateTime dt1 = Convert.ToDateTime("2007-6-1");
    DateTime dt2 = Convert.ToDateTime("2007-8-1");
    TimeSpan ts = dt2 - dt1;
    Console.Write(ts.Days);
    Console.ReadKey();结果是61,不知道楼主怎么会说>60会不成立。
      

  12.   

    Jinglecat是对的。支持。
    不知道楼主为何说不对 
    讲清楚嚒
      

  13.   

    DateTime dt1 = Convert.ToDateTime("2007-6-1");
    DateTime dt2 = Convert.ToDateTime("2007-8-1");
    TimeSpan ts = dt2 - dt1
    是正确的我今上午刚用过的
      

  14.   

    DateTime1.Month - DateTime2.Month
      

  15.   

    我觉得是不是可以在sqlserver里就可以把时间就给处理好了。