Tom*_*idd 5 .net c# formatting timespan .net-4.0
考虑一下这个代码(预装了一个例子):
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 ));
Run Code Online (Sandbox Code Playgroud)
这是我至少从.NET 1.1开始工作的一段代码的代表.
它在1.1到3.5中运行良好,具有以下输出(对于这些dummied up输入):
30.00:00:28.3580246
Run Code Online (Sandbox Code Playgroud)
但现在我发现它在.NET 4中死了,并显示错误消息:
Input string was not in a correct format.
因此,就好像.NET 4突然决定它不喜欢这种格式的时差.将线路更改为,比方说
Console.WriteLine(string.Format( "{0}", ts.ToString("d.hh:mm:ss.ff") ));
Run Code Online (Sandbox Code Playgroud)
具有相同的效果.
现在我注意到的事情是,如果我只是默认,.ToString()我得到相同的输出.我认为思考过程是这是针对未来版本中默认格式变化的保险政策.但现在它看起来并不像是一种选择.
有谁知道为什么这会改变,如果我做错了什么或者是否有最佳实践方法来做我想要完成的事情?