2013-03-10 33 views
5
TimeSpan Ts = new TimeSpan(5, 4, 3, 2); 
return Ts.ToString("?"); 

biểu hiện gì tôi nên thay thế bằng một dấu chấm hỏi để có được định dạng này: 5d: 4h: 3m: 2s?TimeSpan.ToString() chuỗi trở lại như (d: hh: mm: ss)

+0

bạn có thể thực hiện việc này bằng mã và định dạng của bạn 'TimeSpan Ts = TimeSpan mới (5, 4, 3, 2); var RetValue = string.Format ("{0} d: {1} h: {2} m: {3} s", Ts.Days, Ts.Hours, Ts.Milliseconds, Ts.Seconds); ' – MethodMan

Trả lời

11
TimeSpan timeSpan = new TimeSpan(5, 4, 3, 2); 
string str = timeSpan.ToString(@"d\d\:h\h\:m\m\:s\s", System.Globalization.CultureInfo.InvariantCulture); 

Xem Custom TimeSpan Format Strings về cách định dạng TimeSpan s.

Mặc dù lưu ý rằng số âm không thể phân biệt với số dương là TimeSpan. Chúng xuất hiện giống như chúng đã được negated. Có -new TimeSpan(5,4,3,2) sẽ vẫn hiển thị là 5d:4h:3m:2s. Nếu bạn muốn số âm hiển thị, bạn nên định dạng số của riêng mình mặc dù thuộc tính của TimeSpan.

+0

Có không cần phải thoát khỏi tất cả các ký tự trong chuỗi định dạng của bạn. Đang thoát \. và \: là đủ. –

+0

Mosh muốn các bộ phận được đặt cố định với phần tương ứng của nó, do đó, đối với việc sử dụng nó, yêu cầu của nó là cần thiết. Nếu bạn chỉ muốn '12: 34: 45', thì không cần phải thoát. – Caramiriel

+0

Bạn nói đúng. Lấy làm tiếc. Tôi đã không đọc câu hỏi cuối cùng. –

2

Bạn có thể thực hiện điều này bằng cách sử dụng mã hiện tại của bạn

TimeSpan Ts = new TimeSpan(5, 4, 3, 2); 
var RetValue = string.Format("{0}d:{1}h:{2}m:{3}s", 
    Ts.Days, 
    Ts.Hours, 
    Ts.Minutes, 
    Ts.Seconds); 

mang lại điều này như một định dạng kết quả "5d:4h:0m:2s"

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