例如已知两个日期分别为2010-10-22和2010-1-1那么两个日期的月差值可以用 日期.AddMonths求差算出差9个月,但如果我开始日期选择的是2009-8-1或者是更早的年限,改怎么解决?

解决方案 »

  1.   

    DateTime date1 = new DateTime(2004,11,21,8,21,00);
    TimeSpan ts = (TimeSpan)DateTime.Now.Subtract(date1);LoadJs = "<script>alert('" + ts.Days + "')</script>";和ts.Days类似可以得到2个时间的月差值
      

  2.   

    private string DateDiff(DateTime DateTime1, DateTime DateTime2)
            {
                string dateDiff = null;
                try
                {
                    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
                    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
                    TimeSpan ts = ts1.Subtract(ts2).Duration();
                    dateDiff = ts.Days.ToString() + "天" +
                            ts.Hours.ToString() + "小时"
                            + ts.Minutes.ToString() + "分钟"
                            + ts.Seconds.ToString() + "秒";
                }
                catch
                {            }
                return dateDiff;
            }
      

  3.   

    DateTime dt1 = new DateTime(2009, 01, 01);
    DateTime dt2 = new DateTime(2010, 10, 30);
    int months = (dt2.Year * 12 + dt2.Month) - (dt1.Year * 12 + dt1.Month);
      

  4.   

    其实两个日期求月份差值有个问题,如果不是相差整月份,怎样去精确,是舍掉多余的天数,还是不足一个月的按一个月算,这要根据你的实际需求来定,如果是后一种情况的话,wuyq11的算法要加个1