using System.Globalization;
public static void Main()
var dtStr = "11.12.2017 08:39:39";
bool success = DateTime.TryParseExact(dtStr, "dd.MM.yyyy hh:mm:ss",
CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime changeDate);
DateTime.TryParse(dtStr, out changeDate);
Console.WriteLine($"{success}: {changeDate}");
public static class Extensions
public static DateTime? toDate(this string dateTimeStr, string[] dateFmt)
const DateTimeStyles style = DateTimeStyles.AllowWhiteSpaces;
var dateInfo = System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;
dateFmt=dateInfo.GetAllDateTimePatterns();
if (DateTime.TryParseExact(dateTimeStr, dateFmt,
CultureInfo.InvariantCulture, style, out dt)) result = dt;
public static DateTime? toDate(this string dateTimeStr, string dateFmt=null)
string[] dateFmtArr = dateFmt==null ? null : new string[] { dateFmt };
return toDate(dateTimeStr, dateFmtArr);