c# datetime.tostring()异常问题求解。

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()的时候咋还会有异常呢?能否指点一下。

新手轻喷!

谢谢

图1

图2

试试这么处理
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') : "");
    }