2013-02-09 4 views
1

У меня есть несколько строк в формате ниже:Преобразование неровные строки в TimeSpan в C#

"1:15"
": 45"
"1:30:45"

Мне нужно, чтобы они были преобразованы в TimeSpan, но когда я TimeSpan.Parse некоторые из них (например, первый), он возвращает его как 1 час и 15 минут, где я хочу, чтобы он составлял 1 минуту и ​​15 секунд.

Любой совет будет рад!

строка

ответ

1

Параметр должен быть в определенной форме, указанной ниже:

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws] 

Таким образом, «1:15» будет рассматриваться как чч: мм. Если вы проходите 1 мин 15 секунд, вам нужно переформатировать строку параметров, чтобы она была "00:01:15". Вы можете просто разбить строку на соответствующие дни, часы, минуты, переменные ss и использовать их для назначения объекта TimeSpan.

MSDN имеет хорошую документацию здесь:

http://msdn.microsoft.com/en-us/library/se73z7b9.aspx

+0

Ха-ха, что на самом деле то, что мне нужно, чтобы выйти из него ... Строка, как «00:01:15» Это все, что мне нужно отрезок времени для , Но это дало мне представление о том, как это сделать, так что спасибо! – CCEPROD

5

Вы можете использовать перегрузку TimeSpan.ParseExact, что позволяет задать массив точного format specifiers.

var formats = new string[] {@"m\:s", @"\:s", ...}; 
var timeSpace = TimeSpan.ParseExact(input, formats, CultureInfo.CurrentCulture); 

Обратите внимание, что ParseExact был введен в .NET 4

+0

Спасибо! Работает как шарм – CCEPROD

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