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.
«dicembre»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234