【发布时间】:2011-12-16 03:37:08
【问题描述】:
德尔福:
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
【问题讨论】:
-
有趣的问题,但你应该问一个问题。
-
也许两个系统对leap seconds的处理不同?
-
@Austin Salonen 我为你添加了问题部分:P
-
你有
SecondsBetween文档的链接吗? -
@NoPyGod 我发现了这个QC 59310 该错误已在 Delphi XE 中修复。