Почему эта конкретная строка формата TimeSpan прекратила работать в.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 ));

Это является представительным для части кода, что у меня была работа начиная с.NET 1.1, по крайней мере.

Это хорошо работало в 1,1 до 3,5 со следующим выводом (для этих dummied, вводит):

30.00:00:28.3580246

Но теперь я вижу, что это умирает в.NET 4 с сообщением об ошибке:

Input string was not in a correct format.

Таким образом, это - как будто.NET 4 внезапно решила, что этому не нравится этот формат за разницу во времени. При изменении строки на сказать

Console.WriteLine(string.Format( "{0}", ts.ToString("d.hh:mm:ss.ff") ));

имеет тот же эффект.

Теперь вещь, которую я заметил, является этим, если я просто делаю значение по умолчанию .ToString() Я получаю тот же вывод. Я полагаю, что мыслительный процесс был то, что это было страховым полисом против формата по умолчанию, изменяющегося в будущей версии. Но теперь не похоже, что это - даже опция.

Кто-либо знает, почему это изменилось и если я делаю что-то не так или если существует лучшие практики способ сделать то, что я пытаюсь выполнить?

5
задан Tom Kidd 30 July 2010 в 15:38
поделиться