2013-03-04 38 views
6

Tôi đã có một số mã mà có rất nhiều dữ liệu, vì vậy tôi bắt đầu nó vào thứ năm và để nó chạy vào cuối tuần. Vào thứ hai, tôi đã trở lại và thấy rằng nó đã kết thúc. Tôi đã sử dụng chức năng đồng hồ bấm giờ để theo dõi khoảng thời gian mã chạy. Tuy nhiên, tôi đã kết thúc vớiXuất hiện đồng hồ bấm giờ

Elapsed: 2.18:57:55.xxx 

Tôi hiểu rằng đầu ra thường là H: M: SS, nhưng không hiểu chữ số đầu tiên, đặc biệt là kể từ khi nó chạy trong nhiều ngày. Nó chỉ chuyển đổi từ giờ này sang ngày khác? Tôi đã để nó chạy quá lâu đến nỗi nó vỡ?

EDIT: Xin lỗi, tôi không có nghĩa là nó đã hoàn thành vào thứ Hai. Tôi chỉ có nghĩa là vào thứ hai (khi tôi trở lại máy tính), nó đã được thực hiện.

+0

máy của bạn có thể tạm ngưng/ngủ đông khi không còn gì để làm? –

+0

Bạn có gọi ToString() trên đầu ra không? –

+0

cũng: có cơ hội nào bạn thực sự bắt đầu nó vào thứ Sáu, không phải thứ năm? –

Trả lời

8

Có - đó là định dạng của TimeSpan.ToString:

Chuỗi trở được định dạng với "c" format specifier và có định dạng sau:

[-] [. D] hh: mm : ss [.fffffff]

Các phần tử trong dấu ngoặc vuông ([và]) có thể không được bao gồm trong chuỗi được trả lại. Dấu hai chấm và dấu chấm (: và.) Là các ký tự chữ. Các phần tử không theo nghĩa đen được liệt kê trong bảng sau. Lưu ý rằng chuỗi được trả về bởi phương thức ToString() không nhạy cảm với văn hóa.

Vì không có trình định dạng định dạng hiển thị tổng số giờ, bạn sẽ cần tính toán. Nếu bạn muốn số giờ được hiển thị dưới dạng một số duy nhất, hãy sử dụng:

TimeSpan ts = new TimeSpan(2,18,57,55); 

var output = string.Format("{0}:{1}", 
          ts.Days*24 + ts.Hours, 
          ts.ToString("mm\\:ss\\.ffff")); 

//output = `66:57:55.0000` 
+3

Nếu bắt đầu thứ Năm và được kiểm tra vào thứ Hai, có tất cả các ngày Thứ Sáu, Thứ Bảy và Chủ Nhật ở giữa; chúng ta sẽ mong đợi một '3.something', không? –

+0

Dễ sử dụng 'ts.TotalHours' – SysDragon

+1

@SysDragon ngoại trừ TotalHours bao gồm phần phân đoạn và sẽ làm tròn nếu bạn định dạng nó mà không có số thập phân - bạn có thể cắt ngắn số nhưng điều đó có thực sự dễ dàng hơn không? –

0

Hành vi đó được mong đợi. Từ các tài liệu cho Timespan.ToString():

Chuỗi trở được định dạng với "c" format specifier và có định dạng sau:

[-] [d.] Hh: mm: ss [.fffffff]

"d" - Số ngày trong khoảng thời gian. Phần tử này bị bỏ qua nếu khoảng thời gian ít hơn một ngày.

+0

Nếu bắt đầu vào Thứ Năm và được kiểm tra vào Thứ Hai, có tất cả các ngày Thứ Sáu, Thứ Bảy và Chủ Nhật ở giữa; chúng ta sẽ mong đợi một '3.something', không? –

+0

@MarcGravell Câu hỏi không rõ ràng, nhưng từ các bản cập nhật rõ ràng là câu hỏi liên quan đến định dạng đầu ra, không phải là giá trị đầu ra :) –

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