终止日期 - 起始日期 怎样快速得到 相差的月数 和 畸零天数
就是说 终止日期 - 起始日期 = XXXX天 

解决方案 »

  1.   

      TimeSpan _Span = new DateTime(2010, 4, 22) - new DateTime(2010, 3, 10);
                MessageBox.Show((_Span.Days / 30).ToString()+ "月" + _Span.Days % 30 + "天");
      

  2.   

    去好好查看一下msdn吧,
    http://topic.csdn.net/u/20091113/10/304a9847-4645-404b-89ab-3d9a03e26739.html
      

  3.   

    不知道什么地方用这个,一般用TimeSpan就行,月是不定的·感觉这个功能有点那个·
      

  4.   

    我是新得不能再新的新手,尝试写写权当自己练手。不规格地方请指明using System;
    using System.Collections.Generic;
    using System.Text;namespace Test
    {
        class Program
        {
          
            static void Main(string[] args)
            {
                DateTime tmBegin = new DateTime(2009, 11, 11);
                DateTime tmEnd = new DateTime(2010, 1, 10);            int y,  m, d;
                TimeSpan ts;
                DateTime newBeg;            y = tmEnd.Year;
                m = (tmEnd.Year - tmBegin.Year) * 12 + tmEnd.Month - tmBegin.Month;
                
                if ((int)tmEnd.Day  >= (int)tmBegin.Day)
                {
                    d = tmEnd.Day - tmEnd.Day;
                }
                else
                {
                    m -= 1;
                    if ((int)tmEnd.Month == 1)
                    {
                        int newM;
                        y -= 1;
                        newM = 12;
                        newBeg = new DateTime(y, newM, tmEnd.Day);
                    }
                    else
                    {
                        newBeg = tmEnd.AddMonths(-1);
                    }
                    ts = tmEnd - newBeg;
                    d = (int)ts.TotalDays-1;
                }
                Console.WriteLine("相差{0}个月外加{1}天", m.ToString(),d.ToString());
                Console.ReadKey();
            }
        }
    }
      

  5.   

    你好!你可以参考我在下面地址的回复:http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/08290297-26d0-420f-ae02-af0afd9467b9
      

  6.   

    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; 
            }Int32 days =(Int32) ((TimeSpan)(dt1- dt2)).TotalDays;
     MessageBox.Show(days.ToString());
      

  7.   

    TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan TimeSpan 
      

  8.   

    谢谢各位,我的函数如下,请指教:        /// <summary>
            /// 两个日期相减 得到 月数 和 畸零天数
            /// </summary>
            /// <param name="start"></param>
            /// <param name="end"></param>
            /// <returns></returns>
            private static string DateDiff(DateTime start, DateTime end)
            {
                string dateDiff = null;
                try
                {                
                    DateTime end1;
                    int date = (end - start).Days;
                    int date1 = 0;                if (start.Day <= end.Day)
                    {
                        end1 = new DateTime(end.Year, end.Month, start.Day);
                    }
                    else
                    {
                        end1 = new DateTime(end.Year, end.Month - 1, start.Day);
                    }                date1 = (end1 - start).Days;                dateDiff = ((end1.Year - start.Year) * 12 + end1.Month - start.Month).ToString() + ";" + (date - date1).ToString();
                }
                catch (Exception ex)
                {
                    dateDiff = null;
                }            return dateDiff;
            } 
      

  9.   

    lz,如果日期是 start 2010-01-02  end 2010-02-01
    按着你的算法得到的结果是 1;-1 是差一天不到一个月。
    正常的结果应该是 0:30;
      

  10.   

    对着呀,吓我一跳,刚debug了下,就是0;30