string d1 = "2006/11/21 21:31:38";
            string d2 = "2006/11/19 20:31:38";
            DateTime dt1 = Convert.ToDateTime(d1);
            DateTime dt2 = Convert.ToDateTime(d2);
            string ss = Convert.ToString(dt1 - dt2);
            this.TextBox1.Text = ss;
  
---------------------------------------------
EMail:[email protected] 请给我一个与您交流的机会!

解决方案 »

  1.   

    datediff
    datepart
    如果时间超过30天是否显示月??
    如果时间不足24小时是否显示天??
      

  2.   

    declare @h int
    select @h = datediff(hh,'2006/11/19 20:31:37','2006/11/21 21:31:38')
    declare @d int
    set @d = @h/24
    set @h = @h % 24
    select case @d when 0 then CAST(@h AS varchar(10)) + '小时' else 
    CAST(@d AS varchar(10)) + '天' + CAST(@h AS varchar(10)) + '小时'
    end
      

  3.   

    declare @a smalldatetime
    declare @b smalldatetime
    set @a = '2006/11/21 21:31:38'
    set @b = '2006/11/19 20:31:38'
    print convert(varchar(4),datediff(dd,@b,@a)) + '天' +  convert(varchar(4),datediff(hh,@b,@a) - datediff(dd,@b,@a) * 24) + '小时'
      

  4.   

    对bdbox()的结果中的d1-d2的结果进行处理即可,d1-d2是一个TimeSpan对象
    即:
    TimeSpan d = d1 - d2;
    int day = (int)d.TotalDays;
    int hour = (int)((d.TotalDays - day) * 24);
    string s = day.ToString() + "天 + " + hour.ToString() + "小时";
    这里如果超过30天用月来显示有点麻烦,因为这个与最小的那个时间是有关的。
      

  5.   

    我在明确一下:相减的两个时间是从数据库中查询的,不是外部变量;
        2006/11/21 21:31:38和2006/11/19 20:31:38这两个时间是我随便的写的,也就是说应该大体是select time1-time2 
        from  数据表
     其中time1 ,time2是两个字段
     不足24小时显示为 0天+**分