2012-01-19 33 views
5

tôi muốn loại bỏ các giây từ khoảng thời gian sử dụng C#tháo giây từ khoảng thời gian sử dụng C#

Mã của tôi là ở đây:

TimeSpan lateaftertime = new TimeSpan(); 
lateaftertime = lateafter - Convert.ToDateTime(intime) ; 

Nó trả về giá trị 00:10:00

Nhưng tôi muốn đầu ra dưới đây : 00:10 chỉ không giây trường :00.

+3

Bạn có nghĩa là Để in? Hay bạn thực sự muốn 'tròn' các khoảng thời gian? – leppie

+0

vâng tôi muốn chuyển đổi timepan 00:10:00 giá trị thành 00:10 chỉ –

+0

Vì vậy, bạn muốn in? – leppie

Trả lời

12

Vâng, bạn chỉ có thể làm như

string.Format("{0}:{1}", ts.Hours,ts.Minutes) // it would display 2:5 

EDIT

để có được nó được định dạng đúng sử dụng

string.Format("{0:00}:{1:00}", ts.Hours,ts.Minutes) // it should display 02:05 
+0

Bạn cần phải thêm định dạng, như '" {0:00}: {1:00} "' –

+0

@ScottRippey Cảm ơn bạn đã trỏ nó ra – V4Vendetta

+0

Điều đó có thể được đơn giản hóa thành 'string.Format (" {0: HH \\ : mm} ", ts);' sẽ hiển thị "02:05". –

7

Lưu ý rằng một TimeSpankhông có một định dạng. Nó được lưu trữ trong một số đại diện nội bộ mà không giống như 00:10:00 ở tất cả.

Định dạng thông thường hh:mm:ss chỉ được tạo khi TimeSpan được chuyển đổi thành String, hoặc rõ ràng hoặc ngầm. Do đó, chuyển đổi là điểm bạn cần làm. Ví dụ mã trong câu hỏi của bạn là "quá sớm" - tại thời điểm này, TimeSpan vẫn thuộc loại TimeSpan.

Để chỉnh sửa chuyển đổi sang String, bạn có thể sử dụng String.Format, như đề xuất trong câu trả lời V4Vendetta, hoặc bạn có thể sử dụng một custom format string cho TimeSpan.ToString (có sẵn với .NET 4):

string formattedTimespan = ts.ToString("hh\\:mm"); 
+0

Điều này hoạt động rất tốt! –

6
TimeSpan newTimeSpan = new TimeSpan(timeSpan.Hours, timeSpan.Minutes, 0); 
Các vấn đề liên quan