的Delphi:
SecondsBetween(StrToDateTime('16/02/2009 11:25:34 p.m.'), StrToDateTime('1/01/2005 12:00:00 a.m.'));
130289133
C#:
TimeSpan span = DateTime.Parse("16/02/2009 11:25:34 p.m.").Subtract(DateTime.Parse("1/01/2005 12:00:00 a.m."));
130289134
它也不一致。有些日期会加起来相同,即..
TimeSpan span = DateTime.Parse("16/11/2011 11:25:43 p.m.").Subtract(DateTime.Parse("1/01/2005 12:00:00 a.m."));
SecondsBetween(StrToDateTime('16/11/2011 11:25:43 p.m.'), StrToDateTime('1/01/2005 12:00:00 a.m.'));
both give
216905143
实际上用于编码数据的总秒数,我正在尝试将应用程序移植到C#,所以即使一秒钟也完全抛弃了所有内容。
任何人都可以解释这种差异吗?有没有办法让c#匹配delphi?
编辑:响应建议它可能是闰秒相关:两个日期范围包含相同数量的闰秒(2),因此您可能会预期两者都不匹配。但相反,我们看到了不一致
16/02/2009 - 1/01/2005 = Delphi and C# calculate a different total seconds
16/11/2011 - 1/01/2005 = They calculate the same total seconds
答案 0 :(得分:7)
这个问题似乎与这个QC 59310有关,这个错误在Delphi XE中修复了。
答案 1 :(得分:0)
可能会处理Leap Seconds。但是,.NET并不是我所知道的。
答案 2 :(得分:0)
您没有提及如何将c#TimeSpan转换为数字。 TotalSeconds属性是一个浮点值 - 也许它是double到int转换中的舍入问题?