DateTime login_time = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss"));  
DateTime submit_time = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss"));   
   TimeSpan sj = submit_time - login_time;
按说 sj显示的应该是05:04:16才对!为什么多出来前面的一长串啊!

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/system.timespan(v=vs.80).aspx
      

  2.   

    private string DateDiff(DateTime DateTime1, DateTime DateTime2)
     {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()+"秒";
     return dateDiff;
     }
      

  3.   

    sj.Hours
    sj.Minutes
    sj.Seconds
      

  4.   

    你是两个datetime 类型直接相减的
      

  5.   

    你是两个datetime 类型直接相减的
      

  6.   

    DateTime login_time = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss"));   
    DateTime submit_time = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss"));   
    ---------------------------------
    你这两句真纠结,为什么要ToString("hh:mm::ss")呢??
      

  7.   

    俩个DataTime可以直接相减的,
     TimeSpan sj = submit_time.Subtract(login_time);
    我改成这样也不行
      

  8.   

    看帮助,前面的部分是天,差异是DateTime submit_time = Convert.ToDateTime(DateTime.Now.ToString("hh:mm:ss"));  
    格式化部分所造成的你不要转换,直接两个时间减
      

  9.   

    按说 sj显示的应该是05:04:16才对!为什么多出来前面的一长串啊!datetime 相减能得到什么
    直接在sql里面datdiff函数不就完了 
    c# 里面做数据转化 
      

  10.   

    8楼是正解!
    两个datetime 是可以相减的,没有问题,大家不要认为不能减。
      

  11.   

    DateTime time1 =new DateTime(1982,4,24,14,23,06);    
    DateTime time2 =new DateTime(1982,1,21,8,16,32);    
       
    TimeSpan ts= time2.Subtract(time1);    
    string timespan = "相差:"   
    +ts.Days.ToString()+"天"   
    +ts.Hours.ToString()+"小时"   
    +ts.Minutes.ToString()+"分钟"   
    +ts.Seconds.ToString()+"秒";    
       
      

  12.   

    试试这个
    http://www.cnblogs.com/colder/archive/2011/02/17/1956692.html
      

  13.   


    DateTime login_time =DateTime.Now; 
    DateTime submit_time =DateTime.Now; 
    TimeSpan sj = submit_time - login_time;
    为什么还是乱码,求解!
      

  14.   

    那不是乱码吧,,关键是你想得到什么?string s1= 
    +sj.Hours.ToString()+"小时"   
    +sj.Minutes.ToString()+"分钟"   
    +sj.Seconds.ToString()+"秒";   
        
      

  15.   

    TimeSpan 对象表示时间间隔或持续时间,按正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。用于度量持续时间的最大时间单位是天。更大的时间单位(如月和年)的天数不同,因此为保持一致性,时间间隔以天为单位来度量。
     
    TimeSpan 对象的值是等于所表示时间间隔的刻度数。一个刻度等于 100 纳秒,TimeSpan 对象的值的范围在 MinValue 和 MaxValue 之间。
     
    TimeSpan 值可以表示为 [-]d.hh:mm:ss.ff,其中减号是可选的,它指示负时间间隔,d 分量表示天,hh 表示小时(24 小时制),mm 表示分钟,ss 表示秒,而 ff 为秒的小数部分。即,时间间隔包括整的正负天数、天数和剩余的不足一天的时长,或者只包含不足一天的时长。例如,初始化为 1.0e+13 刻度的 TimeSpan 对象的文本表示“11.13:46:40”,即 11 天,13 小时,46 分钟和 40 秒。
      

  16.   


    我想在页面打开的时候获取到系统的一个时间也就是login_time
    然后我点击提交按钮的时候再获取一个时间submit_time;
    login-time是在protected void Page_Load(object sender, EventArgs e)里面
    { DateTime login_time = DateTime.Now; }
    submit_time是在 protected void submit_Click(object sender, EventArgs e)里面
     { DateTime submit_time = DateTime.Now;   }
    我是等到这个页面过了五分钟左右才点Submi按钮
    可是我获取到的俩个时间是一样的,这是为什么啊
      

  17.   

    这个我也不懂 不过我感觉你的问题不是TimeSpan的问题,应该是asp.net回传时哪块出了问题,希望高手能解答一下 顺便我也学习一下!
      

  18.   

    原因就是submit_Click事件也执行Page_Load,所以2者是一样的
      

  19.   

    嗯 那加个if(!ispostback)就可以了应该
      

  20.   

    我感觉是因为没有执行if(!ispostback)块内的代码 也就是说并没有将当前时间赋值给login_time变量 所以会出现那种效果
      

  21.   

    <%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">  protected void Page_Load(object sender, EventArgs e)
      {
        if (!Page.IsPostBack)
        {
          HiddenField1.Value = DateTime.Now.Ticks.ToString();
        }  }  protected void Button1_Click(object sender, EventArgs e)
      {
        DateTime login_time = new DateTime(Convert.ToInt64(HiddenField1.Value));
        DateTime submit_time = DateTime.Now;
        TimeSpan ts = submit_time - login_time;
        Response.Write("时间间隔(秒):" + ts.Seconds.ToString());
      }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:HiddenField ID="HiddenField1" runat="server" />
      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
      </form>
    </body>
    </html>
      

  22.   

    晕,想你的变量,保存起来,直到下次访问还能用,那你应该保存到网页上,或用ViewState或用Session,或用Application,或用Cookies,或用ASP.NET控件,或是用HTML控件。总之,不能用类的DateTime变量。
    代码参考楼上的。