我正在尝试设置录制时间标签,以便当用户点击按钮时它会启动,当他们点击另一个按钮时它会停止。
我尝试过两种不起作用的东西。
这不起作用,因为我也在做自动收报机中的其他事情,这意味着它可能需要1.5秒但是我增加1,因此录音越长,它就越不准确。
这不起作用,因为如果录制过夜,则时间变为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();
}
有没有人有任何其他想法如何显示一个漂亮的计时器。
答案 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。