Convert.ToDateTime()
uses DateTime.Parse() internally, with the current culture - unless you pass it
null, in which case it returns DateTime.MinValue.
In short,
Convert.ToDateTime() eliminates the code necessary to set the CultureInfo,
which you'd have to do to use DateTime.Parse().
Note: If you're not sure string is a valid DateTime, use neither and instead,
use DateTime.TryParse().
If you're
sure the string is a valid DateTime, and you know the format, you could also
consider the DateTime.ParseExact() or DateTime.TryParseExact() methods.
Please note
that there may be certain cases when the DateTime.Parse() method fails (since
Convert.ToDateTime() uses DateTime.Parse() internally, Convert.ToDateTime() will also
fail).
Consider
the scenario given below:
If user
passes an invalid date format then the method DateTime.Parse() will throw a FormatException.
//
throws FormatException, not a valid format
var
dt1 = DateTime.Parse("");
//
throws FormatException, February doesn’t have a 30th day, not a valid date
var
dt2 = DateTime.Parse("02/30/2010 12:35");
Note: It is recommended to
use DateTime.TryParse() method to avoid unexpected exceptions especially when
accepting inputs from users.
It should
be noted that DateTime.Parse() actually calls DateTime.TryParse() and just
throws the exception in the event TryParse() returns false. That is, Parse() is
roughly equivalent to:
//
rough psuedo-code of Parse()
public
DateTime Parse(string inputString)
{
DateTime result;
if (!DateTime.TryParse(inputString, out
result))
{
throw new FormatException(...);
}
return result;
}
So calling DateTime.TryParse()
directly is more efficient because it avoids the wrapper call, and it doesn’t
allocate and throw an unneeded exception in the case of an error.
No comments:
Post a Comment