Convert.ToDateTime использует DateTime.Parse внутренне, с текущим культура - если вы не передадите ее null, и в этом случае она вернется DateTime.MinValue.
Если вы не уверены, что строка является допустимым DateTime, не используйте ни то, ни другое вместо этого используйте DateTime.TryParse()
Если вы уверены, что строка является допустимой DateTime, и вы знаете формат, вы также можете рассмотреть методы DateTime.ParseExact() или DateTime.TryParseExact().
Ответ 2
DateTime.Parse имеет перегрузку, которая принимает только один String, и ничего больше, и она использует текущую информацию Locale, не передавая ее.
Ответ 3
Перегрузки Convert.ToDateTime, которые принимают строку в качестве входного параметра, внутренне вызывается DateTime.Parse. Ниже приведена реализация Convert.ToDateTime.
public static DateTime ToDateTime(string value)
{
if (value == null)
{
return new DateTime(0L);
}
return DateTime.Parse(value, CultureInfo.CurrentCulture);
}
В случае другой перегрузки параметр вводится в интерфейс IConvertible, а затем вызывается соответствующий метод ToDateTime.
public static DateTime ToDateTime(ushort value)
{
return ((IConvertible) value).ToDateTime(null);
}
Ответ 4
DateTime.Parse выдаст Exception, когда будет передана нулевая строка, Convert.ToDateTime вернет DateTime.MinValue при передаче нулевого значения.