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