2009-10-08 2 views
6

Sto cercando di analizzare DateTime, con un formato esatto accettato dall'input del client.DateTimeFormatInfo.InvariantInfo vs CultureInfo.InvariantCulture

Qual è la migliore

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dateTime); 

O

bool success = DateTime.TryParseExact(value, "dd-MMM-yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime); 

Naturalmente, questo codice è all'interno di un metodo statico comune che viene chiamato dove è richiesta l'analisi di data.

risposta

7

Se si guarda la firma per DateTime.TryParseExact, è necessario il IFormatProvider come terzo argomento. Entrambe le interfacce DateTimeFormatInfo.InvariantInfo e CultureInfo.InvariantCulture implementano questa interfaccia, pertanto in effetti si sta chiamando lo stesso metodo su DateTime in entrambi i casi.

Internamente, se si utilizza CultureInfo.InvariantCulture, la sua proprietà DateTimeFormat viene chiamata per ottenere un'istanza DateTimeFormatInfo. Se si utilizza DateTimeFormatInfo.InvariantInfo, questo viene utilizzato direttamente. La chiamata DateTimeFormatInfo sarà leggermente più veloce in quanto deve eseguire meno istruzioni, ma questo sarà così marginale da non fare alcuna differenza in (quasi) tutti i casi.

La principale differenza tra i due approcci è la sintassi. Usa quello che trovi più chiaro.

3

Daranno gli stessi risultati.
Ed è molto improbabile che ci siano delle differenze nelle prestazioni.

Quindi usa quello che pensi sia più leggibile. La mia scelta sarebbe DateTimeFormatInfo.InvariantInfo per essere leggermente più al punto.