web-dev-qa-db-ja.com

DateTime.ParseとConvert.ToDateTimeの間に違いはありますか?

違いはありますか

Convert.ToDateTime

そして

DateTime.Parse

どちらが高速か、どちらがより安全に使用できますか?

38
Shree

Jon Skeetの別のフォーラムの回答 ...

Convert.ToDateTimeは、現在のカルチャで内部的にDateTime.Parseを使用します-nullを渡さない限り、nullを渡すと、DateTime.MinValueが返されます。

文字列が有効なDateTimeであるかどうかわからない場合は、どちらも使用せず、代わりにDateTime.TryParse()を使用してください

文字列が有効なDateTimeであることが確実で、形式がわかっている場合は、DateTime.ParseExact()またはDateTime.TryParseExact()メソッドを検討することもできます。

32
David

DateTime.Parseには、Stringを1つだけ取り、それ以外は何も受け取らないオーバーロードがあり、渡さなくても現在のLocale情報を使用します。

2
Bilal Sohail

文字列を入力パラメーターとして使用する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);
}
1
Pawan Mishra

DateTime.Parseは、null文字列が渡されるとExceptionをスローします。Convert.ToDateTime 戻ります DateTime.MinValue null値を渡します。

1
Shubham Puri