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:
Framework,
Connect