Rozważmy następujący kod (prestuffed z przykładu):Dlaczego ten konkretny ciąg formatu TimeSpan przestał działać w .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));
ten jest reprezentatywny kawałek kodu, który miałem pracy od .NET 1.1 przynajmniej.
to działało dobrze w 1.1 do 3.5 z następującym wyjścia (dla tych dummied się wejść):
30.00:00:28.3580246
Ale teraz widzę, że umiera w .NET 4 z komunikatem o błędzie:
Input string was not in a correct format.
To tak, jakby .NET 4 nagle zdecydował, że ten format nie podoba się w przypadku różnic czasowych. Zmiana linii na, na przykład:
Console.WriteLine(string.Format("{0}", ts.ToString("d.hh:mm:ss.ff")));
ma taki sam efekt.
Teraz zauważyłem, że jeśli po prostu zrobię domyślny .ToString()
, otrzymam ten sam wynik. Uważam, że proces myślenia polegał na tym, że była to polisa ubezpieczeniowa od domyślnego formatu zmieniającego się w przyszłej wersji. Ale teraz nie wygląda na to, że to nawet opcja.
Czy ktoś wie, dlaczego to się zmieniło i czy robię coś nie tak, czy istnieje najlepszy sposób na zrobienie tego, co próbuję osiągnąć?
W której to jest kulturze? –
Moja lokalna kultura to: en-US –