2010-01-13 4 views
3

Я хочу форматировать TimeSpan иметь формат, как эти 49 ч 34 млн 20 секCustome формат TimeSpan с String.Format

Я использовал формат строку ниже:

String.Format("{0:00}:{1:00}:{2:00}", theTimeSpan.TotalHours, theTimeSpan.Minutes, theTimeSpan.Seconds) 

форматирует TimeSpan к этот формат 49:34:20. Как я могу добавить hr mn sec в String.Format выше? или есть еще один простой способ? Спасибо.

ответ

6

Это просто:

String.Format("{0:00} hr {1:00} mn {2:00} sec ", _ 
       Math.Truncate(theTimeSpan.TotalHours), _ 
       theTimeSpan.Minutes, theTimeSpan.Seconds) 

Это стоит Ознакомившись с how string formatting works in .NET - это важная тема.

Прискорбно, что TimeSpan не поддерживает строки пользовательского формата в настоящий момент - but it will as of .NET 4.0!

+0

Спасибо за ответ и информацию. : D – Narazana

+1

Даже если первоначальный плакат попросил об этом, я думаю, что в этом ответе есть ошибка. Поскольку totalHours содержит частичные часы как часть, формат 00 будет ROUND UP и отображать «1 hr 37 mn» для timeSpan всего 37 минут. Поэтому я считаю, что вокруг TimeSpan.TotalHours должен быть Math.Truncate(). Если я прав, тогда Джон Скит должен дать мне щедрость; у него есть много, чтобы сэкономить. :) – Knox

+0

Хорошо пятнистый. Закрепление. –

Смежные вопросы