2013-04-03 11 views
13

Mam podobny problem z wyrzucaniem wyjątku FormatException. Mój kod to po prostu:Dlaczego metoda DateTime.Now.TimeOfDay.ToString ("HH: mm: ss.ffffff") generuje wyjątek 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); 
} 

Co jest nie tak? Czy to jest problem z gwintowaniem?

+0

gdzie jest zgłaszany wyjątek? –

Odpowiedz

16

Nie ma potrzeby jawnego dostępu do właściwości Date i TimeOfDay instancji DateTime. Możesz uprościć swój kod w następujący sposób:

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

Doskonały. Zajęło mi to dwie godziny czytania na MSDN i wyrywanie włosów po przetestowaniu kilku permutacji kodu, które doprowadziły mnie donikąd i tylko kilka minut twojego czasu ekspertów! Dzięki jeszcze raz. – user1935160

21

TimeOfDay to TimeSpan i różni się formatting options od DateTime. Należy również uciec ':':

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

ty próbka próbował użyć formatu "HH" który defined for DateTime, ale nie dla TimeSpan.

+2

@ user1935160: Nie ma potrzeby oddzielania pory dnia od instancji DateTime. Po prostu użyj 'CurrentTime.ToString (" HH: MM: ss.ffffff ")'. To samo dotyczy części Date. –

+0

Dziękuję bardzo za szczegółową i pomocną odpowiedź! – user1935160

Powiązane problemy