设定一个起始时间,程序中有一个TIMER,我想每一秒获得当前时间与起始时间的时间差(精确到毫秒)。
怎么编?

解决方案 »

  1.   

    知道用TIMESPAN。  但是不知道如何获得俩个时间的差(用毫秒计,因为需要用这个毫秒来走进度条)。
      

  2.   

                DateTime dtStart = DateTime.Now;//起始时间            //下面的放在你的Timer的Tick事件处理函数里
                TimeSpan ts = DateTime.Now - dtStart;//获取当前时间和设定的起始时间之差
                double dCount = ts.TotalMilliseconds;//时差的总毫秒数
      

  3.   

    TimeSpan .TotalMilliseconds楼上已经说了
      

  4.   

    datetime 类型可以直接进行减法计算!
      

  5.   

    看看这个把,这个是我以前做的一个总结,应该是你想用的吧
           /// <summary>
           /// 计算两个日期的时间间隔
            /// </summary>
            /// <param name="DateTime1">第一个日期和时间</param>
            /// <param name="DateTime2">第二个日期和时间</param>
            /// <returns></returns>
            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;
            }
    说明:
    1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻
    2.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值表示的秒数。
      

  6.   


    DateTime dtime1= Convert.ToDateTime(time1);
    DateTime dtime2= Convert.ToDateTime(time2);
    TimeSpan s = dtime1- dtime2;//s.TotalDays //相差天数
    //s.TotalHours  //相关小时数
    //s.TotalMilliseconds // 相差毫秒数
    //s.TotalMinutes//相差分钟数
    //s.TotalSeconds//相差秒数
      

  7.   

      private void timer1_Tick_1(object sender, EventArgs e)
            {   DateTime currentTime=DateTime.Now;
            TimeSpan ts = currentTime - startTime;
            double sub = ts.TotalMilliseconds;
            progressBar1.Value =(Int32)sub/timeLength ;
            }
     进度条为什么不走? 进度条的最大值是音频文件的播放时长》
      

  8.   

    你最好在界面上显示出来当前距离开始的时候有多久。
    另外,你是否没有在媒体开始播放时启动Timer(timer1.Start()) ,并在媒体播放结束时停止Timer(timer1.Stop())
    private void timer1_Tick_1(object sender, EventArgs e)
      { DateTime currentTime=DateTime.Now;
      TimeSpan ts = currentTime - startTime;
      double sub = ts.TotalMilliseconds;
      TextBox1.Text=sub.ToString();//将当前值显示在窗体上
      progressBar1.Value =(Int32)sub/timeLength ;
      }
      

  9.   

    DateTime DateTime1,   DateTime2 = DateTime.Now  ;//现在时间
    DateTime1 =Convert.ToDateTime("2011-05-05 10:00:00"); //设置要求的减的时间
    string dateDiff = null;
    TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
    TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
    TimeSpan ts = ts1.Subtract(ts2).Duration(); //计算ts1,ts2的时间差
    dateDiff = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时"  + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒"; 
      

  10.   

    时间差函数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值表示的秒数。