2015-06-18 27 views
9

Tôi cần chuyển đổi giây theo định dạng 3d, 02:05:45. Với hàm bên dưới, tôi có thể chuyển đổi nó thành 3.02:05:45. Tôi không chắc chắn làm thế nào để chuyển đổi nó sang định dạng tôi muốn. Hãy giúp tôi.Chuyển đổi giây thành ngày, hh: mm: ss C#

private string ConvertSecondsToDate(string seconds) 
{ 
    TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds)); 

    if (t.Days > 0) 
     return t.ToString(@"d\.hh\:mm\:ss"); 
    return t.ToString(@"hh\:mm\:ss"); 

} 

Nếu tôi cố gắng làm một cái gì đó giống như sự trở lại này t.ToString(@"%d , hh\:mm\:ss") tôi nhận được một lỗi,

chuỗi đầu vào không phải là ở định dạng chính xác.

+0

u có thể thêm nhân vật mong muốn ur trong toString Phương với "\" trước khi nhân vật ur ==> t.ToString (@ "d \ d \ , hh \: mm \: ss ") –

+0

bạn có thể đưa ra ví dụ không? Bạn có nghĩa là trả lại t.ToString (@ "%., Hh: mm: ss")? – Ramya

+0

Điều đó đã làm việc @Leon_SFS :) – Ramya

Trả lời

8

Nếu tôi hiểu chính xác, bạn có thể espace d ký tự và khoảng trắng bổ sung với \ như;

if (t.Days > 0) 
    return t.ToString(@"d\d\,\ hh\:mm\:ss"); 

hoặc

if (t.Days > 0) 
    return t.ToString(@"d'd, 'hh\:mm\:ss"); 

Kết quả sẽ được định dạng như 3d, 02:05:45

Từ Other Characters phần trong Custom TimeSpan Format Strings

Bất kỳ nhân vật unescaped khác trong một chuỗi định dạng, bao gồm một ký tự trắng khoảng trắng, được hiểu là thông số định dạng tùy chỉnh. Trong hầu hết các trường hợp, sự hiện diện của bất kỳ ký tự không thoát nào khác dẫn đến một FormatException.

hai cách để bao gồm một ký tự chữ trong một chuỗi định dạng:

  • Kèm theo nó trong dấu nháy đơn (chuỗi literal delimiter).

  • Đặt trước dấu gạch chéo ngược ("\"), được hiểu là ký tự thoát. Điều này có nghĩa là, trong C#, chuỗi định dạng phải là hoặc là @ -quoted, hoặc ký tự chữ phải được bắt đầu bằng dấu gạch chéo bổ sung .

1

https://msdn.microsoft.com/en-us/library/ee372287.aspx

Bất kỳ [khác] nhân vật unescaped trong một chuỗi định dạng, trong đó có một nhân vật trắng-không gian, được hiểu như là một specifier định dạng tùy chỉnh. Trong hầu hết các trường hợp, sự hiện diện của bất kỳ ký tự không thoát nào khác dẫn đến một FormatException. Có hai cách để bao gồm một ký tự chữ trong một chuỗi định dạng:

  • Kèm theo nó trong dấu nháy đơn (nghĩa đen chuỗi delimiter).
  • Đặt trước dấu gạch chéo ngược ("\"), là được hiểu là ký tự thoát. Điều này có nghĩa là, trong C#, định dạng chuỗi phải được @ -quoted, hoặc ký tự chữ phải là trước bởi dấu gạch chéo ngược bổ sung.
private string ConvertSecondsToDate(string seconds) 
{ 
    TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds)); 

    if (t.Days > 0) 
     return t.ToString(@"d\d\,\ hh\:mm\:ss"); 
    return t.ToString(@"hh\:mm\:ss"); 
} 

Hoặc

if (t.Days > 0) 
    return t.ToString(@"d'd, 'hh':'mm':'ss"); 
0
return t.ToString(@"d\d\, hh\:mm\:ss") 
Các vấn đề liên quan