違いはありますか
Convert.ToDateTime
そして
DateTime.Parse
どちらが高速か、どちらがより安全に使用できますか?
Convert.ToDateTimeは、現在のカルチャで内部的にDateTime.Parseを使用します-nullを渡さない限り、nullを渡すと、DateTime.MinValueが返されます。
文字列が有効なDateTime
であるかどうかわからない場合は、どちらも使用せず、代わりにDateTime.TryParse()
を使用してください
文字列が有効なDateTime
であることが確実で、形式がわかっている場合は、DateTime.ParseExact()
またはDateTime.TryParseExact()
メソッドを検討することもできます。
DateTime.Parse
には、String
を1つだけ取り、それ以外は何も受け取らないオーバーロードがあり、渡さなくても現在のLocale
情報を使用します。
文字列を入力パラメーターとして使用する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);
}
DateTime.Parse
は、null文字列が渡されるとException
をスローします。Convert.ToDateTime
戻ります DateTime.MinValue
null値を渡します。