2013-04-05 3 views
0

Даны две строкиАнализировать C# строка в формате чч: мм: сс

string date = "02Mar13"; 
string duration = "03.20min"; 

Как разобрать их DateTime и показать их в следующем формате

string date = "02 March 2013"; 
string duration = "00:03:20"; 

Я прошел через список here но никто не соответствует моим требованиям.

+0

вы можете использовать [DateTime.ParseExact] (http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx). Там должно быть много примеров на MSDN и StackOverflow – Default

ответ

5

Вам необходимо разобрать их, используя Custom Date and Time format string и выход, используя один, а также:

DateTime dt = DateTime.ParseExact(date + duration, 
            "ddMMMyymm.ss'min'", 
            CultureInfo.InvariantCulture); 

string newDate = dt.ToString("dd MMMM yyyy"); 
string newDuration = dt.ToString("HH:mm:ss"); 

Things отметить: Я использую 'min' для представления min буквального в строке - это часть строк пользовательского формата, что позволяет внутренним строковые литералы.

4
string date = "02Mar13"; 
string duration = "03.20min"; 
DateTime newDate = DateTime.ParseExact(date + duration, "ddMMMyymm.ss\\min", null); 

date = newDate.ToString("dd MMMM yyyy"); 
duration = newDate.ToString("hh:mm:ss"); 
+1

«03.20» - минуты, а не часы.minutes, как показывает желаемый вывод. – Oded

+2

+1 для '\\ мин', доказывает, что что-то, чему вы научились на SO – Habib

+0

, что делает' \\ мин'? – Default

1

DateTime разборе довольно много просто используя DateTime.ParseExact:

DateTime.ParseExact(date, "ddMMMyy", null).ToString("dd MMMM yyyy"); // "02 March 2013" 

Что касается второй части, если это продолжительность семантически, то более целесообразно использовать TimeSpan.ParseExact (хотя это требуется некоторые операции с форматированием строк):

TimeSpan.ParseExact(duration, "mm\\.ss'min'", null).ToString("hh\\:mm\\:ss"); // "00:03:20" 
1

Как произвести dateResult

 string date = "02Mar13"; 
     string duration = "03.20min"; 
     var mat=Regex.Match(duration, "(.+?)min"); 
     var dateResult = DateTime.ParseExact(date + mat.Groups[1].Value.Replace(".",":"), "ddMMMyyHH:mm", Thread.CurrentThread.CurrentCulture); 
+0

Regex здесь избыток. Абсолютно не требуется, когда строки пользовательского формата могут напрямую обрабатывать литерал. – Oded

+0

Да! Тебе лучше. Я не знал об использовании «выражения», очень хорошо. Спасибо. +1 –

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