Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Подсчет разницы дат в часах


Автор: Neox_GeForce 16.4.2011, 20:23
Нужно подсчитать разницу дат с точностью до часов.
Как подойти к этой проблеме с учетом что в диапазоне дат могут быть и высокосные годы.
Я думаю что нужно перевести даты в часы, потом вычесть разницу и перевести ее опять в формат даты.
Правильно? Язык решения Pascal.

Автор: Akina 16.4.2011, 20:28
Взять готовый алгоритм расчёта номера дня. Остальное фигня...

Автор: Neox_GeForce 16.4.2011, 20:48
Есть алгоритм.
Код

function dayOfWeek(date:DateTime):Integer;
var
tempYear,tempMonth,TempDay:Integer;
begin
tempYear := date.Year;
tempDay := date.Day;
if(date.Month<=2) then
begin
tempYear := tempYear - 1;
tempDay := tempDay + 3;
end;
dayOfWeek := 1 + (tempDay + tempYear + tempYear div 4 - tempYear div 100 + tempYear div 400+(31*date.Month+10) div 12) mod 7; 
end;

Что нужно делать дальше?

Автор: Akina 17.4.2011, 10:09
Номер дня, а не номер дня недели! разницу видишь?

Автор: Данкинг 17.4.2011, 10:20
Так если получить разницу дней? А часы в сутках - всегда константа. smile 

Автор: Neox_GeForce 17.4.2011, 22:50
Нашел ответ.
http://www.freepascal.org/docs-html/rtl/dateutils/daysbetween.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)