2015-09-25 3 views
1

У меня есть следующая строка:Получить объекты DateTime из определенной строки

"23/09/2015 08:00\r\n   עד\r\n24/09/2015 08:00" 

Как вы можете видеть, у нас есть две даты. Один до первого \r\n, а другой после второго \r\n.

Как я могу извлечь DateTime объектов из этой строки в C#? Единственный способ, которым я знаю, - использовать Substring, но он извлекает текст после первого \r\n.

+0

'string.IndexOf', а затем' string.SubString', а затем 'DateTime.TryParse' – ken2k

+0

Вы можете использовать строку разделения метод –

ответ

0

Я хотел бы использовать myString.Split("\r\n") так:

string[] dates = myString.Split("\r\n"); 

foreach (var dateString in dates) 
{ 
    DateTime dateTime; 
    if (DateTime.TryParse(dateString, out dateTime)) 
    { 
     //Use dateTime here 
    } 
} 
3

Это может помочь

var stringValue = "23/09/2015 08:00\r\n   עד\r\n24/09/2015 08:00"; 

var splitted = stringValue.Split(new string[]{"\r\n"},StringSplitOptions.RemoveEmptyEntries); 

var firstStringDate = splitted[0]; 
var secondStringDate = splitted[2]; 

И получить DateTime:

var firstDate = DateTime.ParseExact(splitted[0], "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo); 
var secondDate = DateTime.ParseExact(splitted[2], "dd/MM/yyyy HH:mm", DateTimeFormatInfo.InvariantInfo); 
+0

[Демо] (https://dotnetfiddle.net/UkvgsQ) этого раствора. – aloisdg

+0

@aloisdg спасибо –

+0

@HosseinNarimaniRad Спасибо за отличный ответ. –

1

Split и TryParse в string сек:

static IEnumerable<DateTime> extractDates(string inputString) 
{ 
    foreach (var item in inputString.Split(new string[] {"\r\n"}, StringSplitOptions.RemoveEmptyEntries)) 
    { 
     DateTime dt; 
     if(DateTime.TryParseExact(item, 
            "dd/MM/yyyy HH:mm", 
            System.Globalization.CultureInfo.InvariantCulture, 
            System.Globalization.DateTimeStyles.None, 
            out dt)) 
      yield return dt; 
    } 
} 
Смежные вопросы