计算天数的差异c#

时间:2016-05-13 09:26:17

标签: c# wpf timer

我正在尝试设置录制时间标签,以便当用户点击按钮时它会启动,当他们点击另一个按钮时它会停止。

我尝试过两种不起作用的东西。

  1. 设置代码并将值增加1并显示。
  2. 这不起作用,因为我也在做自动收报机中的其他事情,这意味着它可能需要1.5秒但是我增加1,因此录音越长,它就越不准确。

    1. 在流启动时获取TimeOfDay,并在获取TimeOfDay并减去它们的ticker方法中获取。
    2. 这不起作用,因为如果录制过夜,则时间变为I.E -67647.74秒。

      private void StreamClick_Click(object obj)
      {
          _streamStartTime = DateTime.Now.TimeOfDay;
      }
      
      private void LiveVideoStream_Tick(VideoCaptureDevice cam)
      {
          _currentRecordTime = DateTime.Now.TimeOfDay - _streamStartTime;
          RecordTime = _currentRecordTime.ToString();
      }
      

      有没有人有任何其他想法如何显示一个漂亮的计时器。

2 个答案:

答案 0 :(得分:1)

您的_streamStartTime也应该是DateTime。然后在Click事件处理程序中为其分配DateTime.Now,不要仅使用TimeOfDay

private void StreamClick_Click(object obj)
{
    _streamStartTime = DateTime.Now;
}

然后在您的计算中,您只需要否定两个DateTime来获取TimeSpan。使用TimeSpan生成时间string

private void LiveVideoStream_Tick(VideoCaptureDevice cam)
{
    TimeSpan _currentRecordTime = DateTime.Now - _streamStartTime;
    string RecordTime = _currentRecordTime.TotalDays.ToString() + " " + _currentRecordTime.Hours.ToString() + ":" + 
        _currentRecordTime.Minutes.ToString() + ":" + _currentRecordTime.Seconds.ToString();

}

答案 1 :(得分:1)

不要使用DateTime.Now,因为系统时钟可以在极少数情况下向后或向前跳转。 DateTime.UtcNow更安全 - 没有夏令时 - 但仍然没有防弹。

您应该使用StopWatch。