考虑这段代码(预装了一个例子):
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()
,我会得到相同的输出。我相信思考过程是,这是针对未来版本中更改默认格式的保险单。但现在看起来这甚至不是一个选择。
有谁知道为什么会发生这种变化,如果我做错了什么,或者是否有最佳实践方法来做我想要完成的事情?