У меня были проблемы со строковыми датами и их преобразованием. Явное указание форматов даты для проверки помогло.
как то так.
public static string[] DateTimeFormats => new string[]
{
"dd-MM-yyyy",
"MM/dd/yyyy",
"MM-dd-yyyy",
"d-MM-yyyy",
"d-M-yyyy",
"dd-M-yyyy",
"dd/MM/yyyy",
"yyyy/MM/dd HH:mm",
"dd-MM-yyyy hh:mm",
"dd-MM-yyyy HH:mm",
"MMMM yyyy"
};
и затем, когда дело доходит до преобразования строковой даты.
internal static DateTime ChangeDateFormat(string dateAdded)
{
return ParseDateTime(DateTime.Now.ToString("dd-MM-yyyy hh:mm"), DateTimeFormats);
}
public static DateTime ParseDateTime(string dateTimeString, string[] formats)
{
try
{
DateTime dateStamp = DateTime.ParseExact(dateTimeString,
formats, CultureInfo.CurrentCulture, DateTimeStyles.None);
return dateStamp;
}
catch (Exception exe)
{
var message = $"dateTimeString: '{dateTimeString}', '{string.Join(",", formats)}'.";
Utility.log(message);
throw;
}
}