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