2011-11-19 19 views

risposta

24

Per un answer on another forum from Jon Skeet ...

Convert.ToDateTime utilizza DateTime.Parse internamente, con l'attuale cultura - a meno che non si passa null, nel qual caso restituisce DateTime.MinValue.

Se non siete sicuri stringa è un DateTime valido, utilizzare né invece, utilizzare DateTime.TryParse()

Se sei sicuro la stringa è un DateTime valido, e si conosce il formato , potresti anche considerare i metodi DateTime.ParseExact() o DateTime.TryParseExact().

+2

"In breve, Convert.ToDateTime() elimina il codice necessario per impostare CultureInfo, che dovresti fare per utilizzare DateTime.Parse() " Non è vero. Non devi impostare CultureInfo per utilizzare DateTime.Parse(). DateTime.Parse ha un sovraccarico che richiede solo 1 stringa e nient'altro e utilizza le informazioni sulla cultura corrente senza che tu debba passarlo. – Nick

+0

@Nick - Hai ragione. Grazie! Ho modificato questo. – David

1

Gli overload di Convert.ToDateTime che accettano stringhe come parametri di input, richiamati internamente DateTime.Parse. Di seguito è l'implementazione di Convert.ToDateTime.

public static DateTime ToDateTime(string value) 
{ 
    if (value == null) 
    { 
     return new DateTime(0L); 
    } 
    return DateTime.Parse(value, CultureInfo.CurrentCulture); 
} 

Nel caso di altri sovraccarico, il parametro viene fuso all'interfaccia IConvertible e quindi il metodo ToDateTime corrispondente viene richiamato.

public static DateTime ToDateTime(ushort value) 
{ 
    return ((IConvertible) value).ToDateTime(null); 
} 
2

DateTime.Parse ha un sovraccarico che solo un String e nient'altro prende e utilizza la corrente Locale informazioni senza dover passare in

Problemi correlati