Considerate questo codice (prestuffed con un esempio):Perché questa particolare stringa di formato TimeSpan ha smesso di funzionare in .NET 4?
DateTime dt1 = DateTime.Parse("7/30/2010 9:33:29.1234567 AM");
DateTime dt2 = DateTime.Parse("6/30/2010 9:33:00.7654321 AM");
TimeSpan ts = dt1 - dt2;
Console.WriteLine(string.Format("{0:d.hh:mm:ss.ff}", ts));
Questo è rappresentativo di un pezzo di codice che ho avuto a lavorare dal .NET 1.1, almeno.
ha funzionato bene in 1.1 a 3.5 con il seguente output (per questi ingressi dummied up):
30.00:00:28.3580246
Ma ora sto vedendo che muore in .NET 4 con il messaggio di errore:
Input string was not in a correct format.
Quindi è come se .NET 4 abbia improvvisamente deciso che questo formato non piace per le differenze di orario. Modifica della linea, ad esempio
Console.WriteLine(string.Format("{0}", ts.ToString("d.hh:mm:ss.ff")));
ha lo stesso effetto.
Ora la cosa che ho notato è che se faccio solo il default .ToString()
ottengo lo stesso risultato. Credo che il processo di riflessione fosse che si trattava di una polizza assicurativa contro il formato predefinito che cambia in una versione futura. Ma ora non sembra che sia anche un'opzione.
Qualcuno sa perché questo è cambiato e se sto facendo qualcosa di sbagliato o se c'è un modo migliore pratiche per fare quello che sto cercando di realizzare?
In che cultura si trova? –
La mia cultura locale è: en-US –