public static DateTime DtTm(String Str) { DateTime Value = DateTime.MinValue; if (Str != "") { try { Value = Convert.ToDateTime(Str); } catch (Exception Ex) { Ex.GetType(); int Year = 0; int Month = 0; int Day = 0; int Hour = 0; int Min = 0; int Sec = 0; Char[] Separators = { ' ', '/', ':', '.' }; Str = Str.Trim().ToUpper(); String[] Parts = Str.Split(Separators); for (int iParts = 0; iParts < Parts.Length; iParts++) { switch (iParts) { case 0: Month = Num(Parts[iParts]); break; case 1: Day = Num(Parts[iParts]); break; case 2: Year = Num(Parts[iParts]); break; case 3: Hour = Num(Parts[iParts]); break; case 4: Min = Num(Parts[iParts]); break; case 5: Sec = Num(Parts[iParts]); break; } } if (Hour > 0 && Hour <= 12) { String Last = Parts[Parts.Length - 1]; if (Last.IndexOf('P') > -1) { Hour += 12; } } if (Year < 99) { Year += 2000; } if (Month == 0) { Month = 1; } if (Month > 12) { Month = 12; } if (Day == 0) { Day = 1; } if (Day > 31) { Day = 31; } if (Month == 2 && Day > 29) { Day = 29; } if (Hour > 24) { Hour = 24; } if (Min > 59) { Min = 59; } if (Sec > 59) { Sec = 59; } if (Year > 0 && Month > 0 && Day > 0) { try { Value = new DateTime(Year, Month, Day, Hour, Min, Sec); } catch (Exception Ex1) { Ex1.GetType(); Day--; try { Value = new DateTime(Year, Month, Day, Hour, Min, Sec); } catch (Exception Ex2) { Ex2.GetType(); } } } } } return(Value); }