如何计算两个时间内的时间差。DateTime.Now        //当前时间 
this.Br_birthday    //病人生日//计算出病人的生日与当前时间相隔多少年多少月多少日?
高手帮忙啊。

解决方案 »

  1.   

    c#计算时间差c#计算时间差重点:   
      
    c#计算时间差函数TimeSpan的应用   
      
    TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值    
      
    下面的列表涵盖了其中的一部分:    
      
    Add:与另一个TimeSpan值相加。    
      
    Days:返回用天数计算的TimeSpan值。    
      
    Duration:获取TimeSpan的绝对值。    
      
    Hours:返回用小时计算的TimeSpan值    
      
    Milliseconds:返回用毫秒计算的TimeSpan值。    
      
    Minutes:返回用分钟计算的TimeSpan值。    
      
    Negate:返回当前实例的相反数。    
      
    Seconds:返回用秒计算的TimeSpan值。    
      
    Subtract:从中减去另一个TimeSpan值。    
      
    Ticks:返回TimeSpan值的tick数。    
      
    TotalDays:返回TimeSpan值表示的天数。    
      
    TotalHours:返回TimeSpan值表示的小时数。    
      
    TotalMilliseconds:返回TimeSpan值表示的毫秒数。    
      
    TotalMinutes:返回TimeSpan值表示的分钟数。    
      
    TotalSeconds:返回TimeSpan值表示的秒数。 
      
      
      
    c#计算时间差实现方法:   
      
     DateTime DateTime1,     
     DateTime2 = DateTime.Now  ;//现在时间    
     DateTime1 =Convert.ToDateTime("2009-04-24 20:00:00"); //设置要求的减的时间    
       string dateDiff = null;     
        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() + "秒";   
     + ts.Seconds.ToString() + "秒";    
      
      
      TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);   
                    TimeSpan ts = ts2.Subtract(ts1).Duration();   
                    string dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时"  
                       + ts.Minutes.ToString() + "分钟"  
                       + ts.Seconds.ToString() + "秒";   
                    SysCommon.DbSql.ExecuteSql("insert into Usertable (UserName,chinesename) values ('" + dateDiff + "','2-1_3')");   
                       
                     TimeSpan ts3 = new TimeSpan(DateTime.Now.Ticks);   
                    TimeSpan ts32 = ts3.Subtract(ts2).Duration();   
      
                    string dateDiff2 = ts32.Days.ToString() + "天" + ts32.Hours.ToString() + "小时"  
                       + ts32.Minutes.ToString() + "分钟"  
                       + ts32.Seconds.ToString() + "秒";   
                    SysCommon.DbSql.ExecuteSql("insert into Usertable (UserName,chinesename) values ('" + dateDiff2 + "','3-2_4')");  本文来自:http://blog.csdn.net/guoyz_1/archive/2009/09/27/4600483.aspx
      

  2.   

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

  3.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace TopWinCMS.Common
    {
        public class MyDateTime
        {
            #region 比较日期的年份差
            /// <summary>
            /// 比较日期的年份差
            /// </summary>
            /// <param name="start">开始日期</param>
            /// <returns>与当前日期的年份差</returns>
            public static int DiffYear(string start)
            {
                return DiffYear(Convert.ToDateTime(start));
            }        /// <summary>
            /// 比较日期的年份差
            /// </summary>
            /// <param name="start">开始日期</param>
            /// <param name="end">结束日期</param>
            /// <returns>年份差</returns>
            public static int DiffYear(string start, string end)
            {
                return DiffYear(Convert.ToDateTime(start), Convert.ToDateTime(end));
            }        /// <summary>
            /// 比较日期的年份差
            /// </summary>
            /// <param name="start">开始日期</param>
            /// <returns>与当前日期的年份差</returns>
            public static int DiffYear(DateTime start)
            {
                return (DiffYear(start, DateTime.Now));
            }        /// <summary>
            /// 比较两个日期的年份差
            /// </summary>
            /// <param name="start">开始日期</param>
            /// <param name="end">结束日期</param>
            /// <returns>年份差</returns>
            public static int DiffYear(DateTime start, DateTime end)
            {
                return (end.Year - start.Year);
            }
            #endregion        #region 格式化当天日期
            /// <summary>
            /// 格式化当天日期(yyyy-MM-dd)
            /// </summary>
            /// <returns>格式化后的日期字符串</returns>
            public static string DateFormat()
            {
                return DateFormat(DateTime.Now);
            }        /// <summary>
            /// 格式化日期(yyyy-MM-dd)
            /// </summary>
            /// <param name="date">待格式化的日期</param>
            /// <returns>格式化后的日期字符串</returns>
            public static string DateFormat(string date)
            {
                return DateFormat(Convert.ToDateTime(date));
            }        /// <summary>
            /// 格式化日期
            /// </summary>
            /// <param name="date">待格式化的日期</param>
            /// <param name="format">格式化串</param>
            /// <returns>格式化后的日期字符串</returns>
            public static string DateFormat(string date, string format)
            {
                return DateFormat(Convert.ToDateTime(date), format);
            }        /// <summary>
            /// 格式化日期(yyyy-MM-dd)
            /// </summary>
            /// <param name="date">待格式化的日期</param>
            /// <returns>格式化后的日期字符串</returns>
            public static string DateFormat(DateTime date)
            {
                return DateFormat(date, "yyyy-MM-dd");
            }        /// <summary>
            /// 格式化日期
            /// </summary>
            /// <param name="date">待格式化的日期</param>
            /// <param name="format">格式化串</param>
            /// <returns>格式化后的日期字符串</returns>
            public static string DateFormat(DateTime date, string format)
            {
                return date.ToString(format);
            }        /// <summary>
            /// 格式化日期时间
            /// </summary>
            /// <param name="datetime">待格式化的日期时间</param>
            /// <returns>格式化后的日期时间字符串</returns>
            public static string DateTimeFormat(DateTime datetime)
            {
                return DateTimeFormat(datetime, "yyyy-MM-dd HH:mm");
            }        /// <summary>
            /// 格式化日期时间
            /// </summary>
            /// <param name="datetime">待格式化的日期时间</param>
            /// <param name="format">格式化串</param>
            /// <returns>格式化后的日期时间字符串</returns>
            public static string DateTimeFormat(DateTime datetime, string format)
            {
                return datetime.ToString(format);
            }
            #endregion        #region 年月日差
            /// <summary>
            /// 年月日差
            /// </summary>
            /// <param name="ddo"></param>
            /// <param name="start"></param>
            /// <param name="end"></param>
            /// <returns></returns>        public static double DateDiff(DateDiffOption Interval, DateTime StartDate, DateTime EndDate)
            {
                double lngDateDiffValue = 0;
                System.TimeSpan TS = new System.TimeSpan(EndDate.Ticks - StartDate.Ticks);
                switch (Interval)
                {
                    case DateDiffOption.Second:
                        lngDateDiffValue = TS.TotalSeconds;
                        break;
                    case DateDiffOption.Minute:
                        lngDateDiffValue = TS.TotalMinutes;
                        break;
                    case DateDiffOption.Hour:
                        lngDateDiffValue = TS.TotalHours;
                        break;
                    case DateDiffOption.Day:
                        lngDateDiffValue = TS.Days;
                        break;
                    case DateDiffOption.Week:
                        lngDateDiffValue = (TS.Days / 7);
                        break;
                    case DateDiffOption.Month:
                        lngDateDiffValue = (TS.Days / 30);
                        break;
                    case DateDiffOption.Quarter:
                        lngDateDiffValue = ((TS.Days / 30) / 3);
                        break;
                    case DateDiffOption.Year:
                        lngDateDiffValue = (TS.Days / 365);
                        break;
                }
                return (lngDateDiffValue);
            }
            public enum DateDiffOption
            {
                Second, Minute, Quarter, Hour, Day, Week, Month, Year        }
            #endregion        /// <summary>
            /// 输入的二个时间之差,精度:分
            /// </summary>
            /// <param name="datetime"></param>
            /// <returns></returns>
            public static double GetTimeSpan(DateTime Small)
            {
                return GetTimeSpan(DateTime.Now, Small);
            }
            /// <summary>
            /// 输入的二个时间之差,精度:分
            /// </summary>
            /// <param name="Big"></param>
            /// <param name="Small"></param>
            /// <returns></returns>
            public static double GetTimeSpan(DateTime Big, DateTime Small)
            {
                TimeSpan ts = Big - Small;  
                return ts.TotalMinutes;
            }        public static int getWeekNum(DateTime dt)
            {
                DateTime dt1 = new DateTime(dt.Year, 1, 1);
                TimeSpan ts = dt - dt1;
                return (ts.Days + (int)dt1.DayOfWeek) / 7 + 1;
            }
        }
         
    }
      

  4.   

    string dtnow=DateTime.Now.ToShortDateString();//获取当前时间年 月  日  如2010-6-2
      

  5.   

    高手来啊。。我再说说我的需求吧。简单的说就是:已知现在的时间2010-06-02,出生:2005-05-05
                  求出它们相差   (?年?月?日)
    我试了4楼发的DateDiff方法。。返回的double型值,看不懂啊。不知道怎么弄了。唉。
     
      

  6.   

    private   string   getAge(string   bornDate) 
    { DateTime   b=DateTime.Parse(bornDate); 
    double   a=(DateTime.Now-b).TotalDays; 
                            double   aYear=Math.Floor(a/365); 
    double   C=a   %   365; 
    double   aMonth=Math.Floor(C/30); 
    double   aDay=Math.Floor(C   %   30); 
    return   aYear.ToString()   +   "岁   零 "   +   aMonth.ToString()   +   "个月   "   +   aDay.ToString()   +   "天 "; 
    } 得到的实际结果一般有几天的误差。