怎样计算相差年比如2008-5-1跟2006-3-1是相差两年.但2008-5-1跟2006-6-4是相差一年还是两年呢.之间还要考虑年 是365还是366天 

解决方案 »

  1.   

    TimeSpan = 时间1 - 时间2
    可以得到2个时间差
      

  2.   

    这个相差几年要你自己明确规则,如果连你自己都不知道,叫别人怎么回答现在不搞代码了,也不记得有没有现成的方法了,大概写了一个,这样计算2008-5-1跟2006-6-4的结果是相差一年DateTime start = DateTime.Parse("2006-3-1");
    DateTime end = DateTime.Parse("2008-5-1");
    int years = -1;
    if (start > end)
        MessageBox.Show("开始日期大于结束日期!");
    else
    {
        while (start <= end)
        {
            start = start.AddYears(1);
            years++;
        }
        MessageBox.Show("相差" + years + "年");
    }
      

  3.   

    SQL中datediff(yy,'2006-3-1','2008-5-1')即可得到
      

  4.   


    DateTime dt1 = new DateTime(2008,5,1);
    DateTime dt2 = new DateTime(2006,6,4);
    TimeSpan ts = dt2 - dt1;
    Response.Write("两者相差:"+ts.Years.ToString()+"年"+ts.Months.ToString()+"月"+ts.Days.ToString()+"日");
      

  5.   

    楼上代码手敲的吧,MS是TimeSpan没有Years和Months属性的说
      

  6.   


    //计算时间差
    TimeSpan ts1 = new TimeSpan(endtime.Ticks);
                            TimeSpan ts2 = new TimeSpan(startTime.Ticks);
                            TimeSpan ts = ts1.Subtract(ts2).Duration();
                            //ts.TotalSeconds
                            dateDiff = "耗时:" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒"
    //这个非常GOOD
    DateTime start = DateTime.Parse("2006-3-1");
    DateTime end = DateTime.Parse("2008-5-1");
    int years = -1;
    if (start > end)
        MessageBox.Show("开始日期大于结束日期!");
    else
    {
        while (start <= end)
        {
            start = start.AddYears(1);
            years++;
        }
        MessageBox.Show("相差" + years + "年");
    }
      

  7.   


    这个压根就是错误的 根本就没有 ts.Years
      

  8.   

    在ojlovecd的基础上修改的:        DateTime dt1 = new DateTime(2008, 5, 1);
            DateTime dt2 = new DateTime(2006, 6, 4);
            TimeSpan dt = dt1 - dt2;
            int n = Convert.ToInt32 (dt.Days.ToString());
            Response.Write("两者相差:" + n + "天----" + (n / 365) + "年又" + (n % 365) / 30 + "月又" + ((n % 365) %30)+"天");
      

  9.   

     DateTime dt = Convert.ToDateTime(str);
            DateTime now = DateTime.Now;
            TimeSpan result =dt.Subtract(now);
        result.Days  获取天数.根据天数判断...
      

  10.   

    SQL中datediff(yy,'2006-3-1','2008-5-1')即可得到
      

  11.   

    可能我表达的不够清楚.我想的结果是这两个时间相差多少年还剩相差多少月还剩多少天     11楼明白了我的意思.但结果不是这样的
    发表于:2008-06-27 21:48:013楼 得分:0 
    SQL中datediff(yy,'2006-3-1','2008-5-1')即可得到 
    但这两时间不在数据库里呢.只是从前台得到的.如果把他们插入数据库操作会降低执行效率!
      

  12.   

    sql里面直接就有函数来比较啊,晕!!!
      

  13.   


    timespan 只能计算现个日期之间的天数!,你可以根据天数计算年数!中间有判断(365天or366天);
      

  14.   

    DateTime dt1 = new DateTime(2008,5,1);
    DateTime dt2 = new DateTime(2006,6,4);
    TimeSpan ts = dt2 - dt1;
    Response.Write("两者相差:"+ts.Years.ToString()+"年"+ts.Months.ToString()+"月"+ts.Days.ToString()+"日");