Unexpected FormatException in Convert.ToDateTime

Un mese un team della azienda in cui lavoro ha trovato un bug in produzione abbastanza pericoloso.

Era stata utilizzata l’istruzione Convert.ToDateTime per trasformare una stringa in formato dd-MMM-yyyy in una data.
Il tutto sembrava funzionare tranne il fatto che per il solo mese di Marzo veniva scatenata una FormatException.

DateTime date = Convert.ToDateTime("01-mar-2011", new CultureInfo("it-IT")); 

Ho scritto su connect per chiede spiegazioni http://tinyurl.com/6k8yah4 e la risposta è stata “ByDesign” usa DateTime.ParseExact.
Probabilmente il costo per il fix è superiore all’utilizzo che ne viene fatto, certo è che se funziona con tutte le date tranne il mese di Marzo a me sembra un bug. #computermagia

Quindi usando il DateTime.ParseExact sarebbe così

string dateString = "01-mar-2011";
string format = "dd-MMM-yyyy";
IFormatProvider provider = new CultureInfo("it-IT");

DateTime  result = DateTime.ParseExact(dateString, format, provider);
Tag di Technorati: ,

posted @ martedì 5 aprile 2011 14:57

Print
Comments have been closed on this topic.
«novembre»
domlunmarmergiovensab
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567