2013-04-03 27 views
13

Tôi đang gặp sự cố tương tự với FormatException bị ném. Mã của tôi chỉ đơn giản là:Tại sao DateTime.Now.TimeOfDay.ToString ("HH: mm: ss.ffffff") ném 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); 
} 

Có gì sai ở đây? Đây có phải là vấn đề về luồng không?

+0

trường hợp ngoại lệ bị ném? –

Trả lời

16

Không cần phải truy cập rõ ràng thuộc tính Date và TimeOfDay của cá thể DateTime. Bạn có thể đơn giản hóa mã của mình như vậy:

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

Tuyệt vời. Đã cho tôi hai giờ đọc trên MSDN và kéo tóc của tôi ra sau khi kiểm tra một vài hoán vị trong mã mà đã cho tôi hư không, và chỉ một vài phút thời gian chuyên gia của bạn! Cảm ơn một lần nữa. – user1935160

21

TimeOfDayTimeSpan và có formatting options khác với DateTime. Bạn cũng cần phải thoát khỏi ':':

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

Bạn mẫu cố gắng sử dụng định dạng "HH" đó là defined for DateTime, nhưng không phải cho TimeSpan.

+2

@ user1935160: Không cần phải tách thời gian trong ngày khỏi phiên bản DateTime của bạn. Chỉ cần sử dụng 'CurrentTime.ToString (" HH: MM: ss.ffffff ")'. Điều tương tự cũng xảy ra với phần Ngày tháng. –

+0

Cảm ơn bạn rất nhiều vì phản hồi chi tiết và hữu ích! – user1935160

Các vấn đề liên quan