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
SecondsBetween(EncodeDateTime(2009,2,16,23,25,34,0), EncodeDateTime(2005,1,1,0,0,0,0))
进行了代码测试,结果在两种语言中都是一样的(130289134)。 - RRUZ