Считайте этот код (предварительно наполненным примером):
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()
Я получаю тот же вывод. Я полагаю, что мыслительный процесс был то, что это было страховым полисом против формата по умолчанию, изменяющегося в будущей версии. Но теперь не похоже, что это - даже опция.
Кто-либо знает, почему это изменилось и если я делаю что-то не так или если существует лучшие практики способ сделать то, что я пытаюсь выполнить?