1.winform 写了个进程监控,实机运行时发现如图1报异常。
按照图片中提示是timer2丢出,timer2作用仅是更新界面label中“监控已运行****”
timer2代码逻辑很简单:每隔1秒更新label。见代码片
private void Timer2_Tick(object sender,EventArgs e)
{
if(tb.ToString() == "0001/1/1 0:00:00")
{
}
else
{
this.label1.Text = "监控已运行:" + (DateTime.Now - tb).ToString("g").Substring(0,11);
}
}
我理解下来,报错的意思是时间相减之后位数不够11位了,所以抛出异常,这个理解对么?
2.同时还问个问题:如图2
dt是datetime 未点button时未赋值,它在tostring()的时候咋还会有异常呢?能否指点一下。
新手轻喷!
谢谢
试试这么处理
Eeeeee
string str = null;
TimeSpan ts = starTime.Subtract(nowTime).Duration();
str = ts.Days.ToString() + "天" + ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分钟" + ts.Seconds.ToString() + "秒";
return str;
两个时间相减,可以用TimeSpan,不要直接相减。
判断下 参考一二 把后者的时间 先带入到方法 GetDateTime 然后时间差值就出来
public static DateTime GetDateTime(string _DateTime)
{
DateTime _OutDateTime = DateTime.MinValue;
if (!string.IsNullOrEmpty(_DateTime))
{
if (DateTime.TryParse(_DateTime, out _OutDateTime))
{
return Convert.ToDateTime(_DateTime);
}
}
return _OutDateTime;
}
public static string ConvertTimeSpan(double _TotalSeconds)
{
TimeSpan _TimeSpan = new TimeSpan(0, 0, Convert.ToInt32(_TotalSeconds));
return (_TimeSpan.Days > 0 ? _TimeSpan.Days.ToString().PadLeft(2, '0') : "") + " " +
(_TimeSpan.Hours >= 0 ? _TimeSpan.Hours.ToString().PadLeft(2, '0') + ":" : "") + " " +
(_TimeSpan.Minutes >= 0 ? _TimeSpan.Minutes.ToString().PadLeft(2, '0') + ":" : "") + " " +
(_TimeSpan.Seconds >= 0 ? _TimeSpan.Seconds.ToString().PadLeft(2, '0') : "");
}