Get Date from String

c#, datetime, string

Solution

This will extract, parse and print all dates in the input text:

var regex = new Regex(@"\b\d{2}\.\d{2}.\d{4}\b");
foreach(Match m in regex.Matches(inputText))
{
    DateTime dt;
    if (DateTime.TryParseExact(m.Value, "dd.MM.yyyy", null, DateTimeStyles.None, out dt))
        Console.WriteLine(dt.ToString());
}

Now, if you just want the first date, you can do that:

static DateTime? GetFirstDateFromString(string inputText)
{
    var regex = new Regex(@"\b\d{2}\.\d{2}.\d{4}\b");
    foreach(Match m in regex.Matches(inputText))
    {
        DateTime dt;
        if (DateTime.TryParseExact(m.Value, "dd.MM.yyyy", null, DateTimeStyles.None, out dt))
            return dt;
    }
    return null;
}

Note that the method returns a nullable `DateTime`, so that it can return null when the string contains no date.

Problem

Lets say I have one of following strings: ``` "Hello, I'm a String... This is a Stackoverflowquestion!! Here is a Date: 16.03.2013, 02:35 and yeah, plain text blah blah..-." "This the other string! :) 22.11.2012. Its a Date you see" "Here we have 2 Dates, 23.12.2012 and 14.07.2011" ``` What would be the best and fastest way to get these dates from the string (in `DateTime`)? (Only First occured Date in String) Desirable Returns: ``` String 1: 16.03.2013 (as a DateTime) String 2: 22.11.2012 (" ") String 3: 23.12.2012 (" ") ``` So I would call a method something like: ``` DateTime date1 = GetFirstDateFromString(string1); ```

Original source