例如:2007-8-01 和2008-1-31 相差结果为6个月
2007-1-1和2007-2-28相差为2个月。
2007-3-15和2007-4-30相差为1.5个月(为((31天-15天)/30)+1个月)
如何精确得到月。

解决方案 »

  1.   

    有个方法  能得到标准日期的差
    具体在msdn
      

  2.   

    2007-1-1和2007-2-28相差为2个月。
    ==================================>
    一定相差两个月吗?不一定吧,闰年的2月份是29天,不是28天。相差2个月也不精确2007-3-15和2007-4-30相差为1.5个月(为((31天-15天)/30)+1个月)
    ==================================>
    (31 - 15 ) /30 + 1 == 1.5  等于1.5吗?应该等于1
      

  3.   

    你这个问题,有点不好整, 如果要算天的话简单 直接相减得到一个timespan,天就出来了,
    月的话,不知道多出来的天算一月呢还是不算呢,不论算多一个月还是不算,天部分的值都没有实际计算价值
      

  4.   

    DateTime dt1 = new DateTime(2007,2,28);
    DateTime dt2 = new DateTime(2007,1,1);
    TimeSpan t1 = dt1-dt2;
    int month = (t1.Days+2) / 30;
      

  5.   

    DateTime dt1 = new DateTime(2007,2,28);
    DateTime dt2 = new DateTime(2007,1,1);
    TimeSpan t1 = dt1-dt2;
    然后t1有month属性,就是了
      

  6.   

    你可以查查SQL2000里面的幫助它里面有具體到秒差
      

  7.   

    不同的情况有不同的计算方式,对不足月的天数的处理,算工资和中国电信收费就不会一样的。
    有什么好讨论的,难道 system1190 () 想定个 ISO#### 标准?
      

  8.   

    月份本来就是不清晰的一个概念 <=== 同意+1但是如果非要计算,可以尝试用下面的公式,忽略天数进行计算。DateTime dt1 = new DateTime(2007,2,28);
    DateTime dt2 = new DateTime(2007,1,1);
    int monthdiff = (dt1.Year - dt2.Year)*12 + (dt1.Month - dt2.Month);