DateTime.TryParseExact method for string comparison

c#, linq

Solution

If you know the format of the date/time exactly (i.e. it never changes, and does not depend on the culture or locale of the user), then you can use `DateTime.TryParseExact`.

For example:

DateTime result;
if (DateTime.TryParseExact(
    str,                            // The string you want to parse
    "dd-MM-yyyy",                   // The format of the string you want to parse.
    CultureInfo.InvariantCulture,   // The culture that was used
                                    // to create the date/time notation
    DateTimeStyles.None,            // Extra flags that control what assumptions
                                    // the parser can make, and where whitespace
                                    // may occur that is ignored.
    out result))                    // Where the parsed result is stored.
{
    // Only when the method returns true did the parsing succeed.
    // Therefore it is in an if-statement and at this point
    // 'result' contains a valid DateTime.
}

The format string can be a fully specified custom date/time format (such as `dd-MM-yyyy`), or a general format specifier (such as `g`). For the latter, the culture matters as to how the date is formatted. For example, in the Netherlands dates are written as `26-07-2012` (`dd-MM-yyyy`) whereas in the US dates are written as `7/26/2012` (`M/d/yyyy`).

However, this all only works when your string `str` contains only the date you want to parse. If you have a bigger string with all sorts of unwanted characters around the date, then you'll have to find the date in there first. This can be done using a regular expression, which is a whole other topic in itself. Some general information about regular expressions (regex) in C# can be found here. A regular expression reference is here. For example, a date similar to `d/M/yyyy` can be found using the regex `\d{1,2}\/\d{1,2}\/\d{4}`.

Problem

Hey how can you do a string comparison match for a given date, `DateTime.TryParseExact` seems like the sensible option but I am not sure how to construct the arguement in the below method: ``` public List<Dates> DateEqualToThisDate(string dateentered) { List<Dates> date = dates.Where( n => string.Equals(n.DateAdded, dateentered, StringComparison.CurrentCultureIgnoreCase)).ToList(); return hiredate; } ```

Original source

Related problems