Любая разница между DateTime.Parse и Convert.ToDateTime?
Есть ли разница между
Convert.ToDateTime
и
DateTime.Parse
Какой из них быстрее или безопаснее использовать?
Ответы
Ответ 1
В ответ на ответьте на другой форум от Jon Skeet...
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
при передаче нулевого значения.