2010-03-05 11 views
9

Tôi đã thử tìm kiếm here, nhưng nó không thể giúp tôi nhiều ..
Tôi muốn chuyển đổi time_span thành chuỗi, tôi không muốn trả về khoảng thời gian trong ngày .. nhưng chỉ HH: mm: ss. Làm thế nào để đạt được điều đó?làm thế nào để đạt được timespan để chuyển đổi chuỗi?

mẫu mã của tôi là ở đây:

   String time_span_par = "06:12:40"; 
       String time_str = "18:13:59"; 
       TimeSpan time_span_var = TimeSpan.Parse(time_span_par); 
       TimeSpan time_span = TimeSpan.Parse(time_str); 

       time_span = time_span.Add(time_span_var); 
       string temp = time_span.ToString("HH:mm:ss"); 
+0

Điều đó có nghĩa là bạn muốn thêm 18 giờ đến 6 giờ? Nó sẽ không phải là một ngày sau đó? – shahkalpesh

+0

Ya nhưng tôi không muốn ngày .. 0 giờ là đủ để có được hiển thị .. –

Trả lời

17

Hãy thử sử dụng

DateTime d = new DateTime(time_span.Ticks); 
string time = d.ToString("HH:mm:ss"); 
+0

hello @astander, Câu trả lời của bạn là chấp nhận được quá .. Nhưng cá nhân tôi thích một mã lót .. –

+5

@infant lập trình viên, cái này cũng có thể là một lớp lót, bạn có thể kết hợp hai biểu thức trong một dòng: 'string time = new DateTime (time_span.Ticks). ToString (" HH: mm: ss ");' – CMS

+0

@cms, ok .. sau đó được chấp nhận . Tôi chỉ tránh tuyên bố một biến khác. –

6

này nên làm việc:

string temp = string.Format("{0}:{1}:{2}", 
    time_span.Hours.ToString(), time_span.Minutes.ToString(), 
    time_span.Seconds.ToString()); 

Theo nhận xét nếu bạn muốn hai con số bạn có thể làm:

string temp = string.Format("{0}:{1}:{2}", 
    time_span.Hours.ToString("00"), time_span.Minutes.ToString("00"), 
    time_span.Seconds.ToString("00")); 

được sửa đổi: theo bình luận của Jimmy,

string temp = string.Format("{0:00}:{1:00}:{2:00}",time_span.Hours, time_span.Minutes, time_span.Seconds); 
+2

Sẽ không cung cấp cho bạn những thứ như "1: 2: 6" cho <10 phần? –

+1

Có, nó sẽ :) Thêm định dạng cho hai chữ số. – Kelsey

+2

string.Format ("{0:00}: {1:00}: {2:00}", time_span.Hours, time_span.Minutes, time_span.Seconds); – Jimmy

1

Đơn giản chỉ cần chuyển đổi giá trị của ve vào một DateTime và sau đó sử dụng ToString của nó()

var date1 = DateTime.Now; 
var date2 = DateTime.Now.AddSeconds(-1000); 
var diff = date1 - date2; 
var temp = new DateTime(diff.Ticks).ToString("HH:mm:ss") 
+0

+1, cảm ơn phản hồi, –

3

Hãy thử điều này:

time_span = time_span.Add(time_span_var); 
    string temp = time_span.ToString(); 
    temp = string.Format("{0}:{1}:{2}", time_span.TotalHours, time_span.TotalMinutes, time_span.TotalSeconds); 

E dit Sau khi tôi đọc nhận xét của bạn về câu hỏi của bạn, đó là bạn cần hiển thị số giờ không cho ngày mới, câu trả lời của tôi sẽ cho bạn tổng số giờ, phút và giây, không phải những gì bạn muốn.

(+1) Kelseys;)

+1

Bạn không thể sử dụng 'TotalHours',' TotalMinutes', vv khi chúng được tính toán độc lập tất cả bao gồm giá trị. Cũng chỉ cần thực hiện một ToString() trên các đầu ra thời gian: '1.00: 26: 3' trong đó phiên bản của tôi xuất ra:' 00: 26: 39'. – Kelsey

+0

Cảm ơn Kelsey;) Câu trả lời của bạn thực sự là câu trả lời tốt nhất cho câu hỏi của cô ấy. Tôi đã chỉnh sửa câu trả lời ở trên trước khi trang của tôi được cập nhật với nhận xét của bạn. Dù sao thì cũng cám ơn bạn. –

1
String time_span_par = "06:12:40"; 
String time_str = "18:13:59"; 
TimeSpan time_span_var = TimeSpan.Parse(time_span_par); 
TimeSpan time_span = TimeSpan.Parse(time_str); 

TimeSpan finalTime = (time_span_var + time_span); 
Console.WriteLine(finalTime); 
Console.WriteLine(finalTime - TimeSpan.FromHours(finalTime.Days * 24)); 
+0

Ấn tượng .. :-) +1 –

3

Code tôi đã thực hiện là:

  string temp = DateTime.Today.Add(time_span).ToString("HH:mm:ss"); 

Originally posted by Marc Gravell,

+0

tại sao bạn thực hiện một câu trả lời và chấp nhận một câu trả lời khác? – Jimmy

+0

Đây không phải là câu trả lời của riêng tôi .. vì vậy tôi không muốn lấy tín dụng, Và tôi cũng muốn đánh giá cao những người khác giúp đỡ thái độ và nỗ lực thực hiện .. :-) –

+0

Và giải pháp được chấp nhận cũng đáng được thực hiện .. –

0

Nếu số ngày là không thích hợp sau đó bạn có giải pháp, tuy nhiên tôi đi qua câu trả lời này tìm kiếm một chuyển đổi đã cho tổng số giờ, vì vậy 36 giờ sẽ cần phải được hiển thị là 36:00:00. Sử dụng một số gợi ý trên đây là những gì tôi đã đưa ra:

SomeLabel.Text = Math.Floor(ts.TotalHours).ToString() + ":" + ts.Minutes.ToString("D2") + ":" + ts.Seconds.ToString("D2"); 

Tổng số giờ luôn làm tròn xuống, phút và giây được đệm là 2 chữ số (00-09)

3

Có một nhiều cách đơn giản hơn để làm điều này ngay bây giờ (mặc dù chỉ sử dụng khung 4), bạn chỉ cần sử dụng chuỗi theo nghĩa đen và bạn có thể thực hiện nó trực tiếp trên cá thể TimeSpan.

time_span.ToString(@"hh\:mm\:ss") 

Đó sẽ ra

00:26:39 

hữu ích ngay bây giờ cho người vấp ngã trên này (như bản thân mình).

Chúc mừng :)