2013-04-03 107 views
13

我遇到了與引發FormatException類似的問題。我的代碼很簡單:爲什麼DateTime.Now.TimeOfDay.ToString(「HH:mm:ss.ffffff」)會拋出FormatException?

void Orders_OnSubmit() 
{ 
    DateTime CurrentTime = DateTime.Now; 
    rtbAdd("Submitted on " + CurrentTime.Date.ToString("MM/dd/yyyy") + " at " + CurrentTime.TimeOfDay.ToString("HH:mm:ss.ffffff")); 
} 

void rtbAdd(String S) 
{ 
    DefaultDelegate del = delegate() 
    { 
     rtb.AppendText(S + "\n"); 
    }; 
    this.Invoke(del); 
} 

這裏有什麼問題?這是一個線程問題嗎?

+0

其中異常被拋出? –

回答

16

沒有必要顯式訪問DateTime實例的Date和TimeOfDay屬性。您可以簡化您的代碼如下所示:

rtbAdd(String.Format("Submitted on {0:MM/dd/yyyy} at {0:HH:mm:ss.ffffff}", DateTime.Now)); 
+2

非常好。花了我兩個小時的時間閱讀MSDN,在測試了幾個代碼的排列後,我的頭髮被拉出,這讓我無處可逃,只有幾分鐘的專家時間!再次感謝。 – user1935160

21

TimeOfDayTimeSpan,它有不同的formatting optionsDateTime。您還需要逃避':'

currentTime.TimeOfDay.ToString("hh\\:mm\\:ss\\.ffffff") 

您樣品試圖使用"HH"格式爲defined for DateTime,而不是TimeSpan

+2

@ user1935160:不需要將日期時間與DateTime實例分開。只需使用'CurrentTime.ToString(「HH:MM:ss.ffffff」)'。日期部分也是如此。 –

+0

非常感謝您的詳細和有益的迴應! – user1935160

相關問題