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