public static bool TryParseDateTime(this string input, out DateTime dt, Culture inputculture = null, DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY) { if (inputculture == null) { inputculture = Globals.CurrentCulture; } int year, month, day; char separator = '-'; if (!input.Contains("-") && input.Contains("/")) { separator = '/'; } bool result = GetDefaultCalendarDateFromString(input, out year, out month, out day, separator, inputculture, parseOrder); if (!result) { dt = default(DateTime); return(false); } dt = ConvertFromCalendar(year, month, day, inputculture.Calendar); return(true); }
public static DateTime ParseDateTime(this string input, Culture inputculture = null, DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY) { DateTime dt; if (!TryParseDateTime(input, out dt, inputculture, parseOrder)) { throw new Exception("Localizer: Cannot parse datetime in this culture!"); } return(dt); }
internal static bool GetDefaultCalendarDateFromString(this string input, out int year, out int month, out int day, char separator = (char)0, Culture inputculture = null, DateTimeParseOrder parseOrder = DateTimeParseOrder.DMY) { if (inputculture == null) { inputculture = Globals.CurrentCulture; } if (separator == (char)0) { separator = Globals.CurrentCulture.DateSeparator[0]; } if (inputculture.Equals(SupportedCultures.FaIr)) { PersianCalendar.DateFormatType df; switch (parseOrder) { case DateTimeParseOrder.YMD: df = PersianCalendar.DateFormatType.YMD; break; case DateTimeParseOrder.YDM: df = PersianCalendar.DateFormatType.YDM; break; case DateTimeParseOrder.DMY: df = PersianCalendar.DateFormatType.DMY; break; case DateTimeParseOrder.DYM: df = PersianCalendar.DateFormatType.DYM; break; case DateTimeParseOrder.MYD: df = PersianCalendar.DateFormatType.MYD; break; case DateTimeParseOrder.MDY: df = PersianCalendar.DateFormatType.MDY; break; default: df = PersianCalendar.DateFormatType.UnknownFormat; break; } if (input.Contains(":") && input.Contains(" ")) { var inputs = input.Split(' '); if (inputs.Length == 2) { if (inputs[0].Contains(":") ^ inputs[1].Contains(":")) { if (inputs[0].Contains(":")) { input = inputs[1]; } else { input = inputs[0]; } } } } var pdt = PersianCalendar.PersianDateTime.ParseDate(input, separator, ref df); year = pdt.Year; month = pdt.Month; day = pdt.Day; return(true); } if (inputculture.Equals(SupportedCultures.EnUs)) { var dt = DateTime.Parse(input); year = dt.Year; month = dt.Month; day = dt.Day; return(true); } year = month = day = 0; return(false); }