Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизколичество дней Найти похожие ветки
← →
denis_stell © (2010-04-08 19:55) [0]Помогите пожалуйста с одной прогой,нужно написать прогу которая считает количество оставшихся дней до дня рождения(день рождения в этом году не был,дата вводится пользователем)
← →
И. Павел © (2010-04-08 20:22) [1]Просто вычитайте из даты дня рождения текущую дату, привордите к типу int и все готово :)
← →
И. Павел © (2010-04-08 20:25) [2]
> И. Павел © (08.04.10 20:22) [1]
При этом даты должны иметь тип TDateTime
← →
Kerk © (2010-04-08 20:29) [3]В цикле от 0 до 365 вызывай эту функцию для текущей даты и сравнивай результат с датой дня рожденья. Как раз получишь разницу.
function IncDay(const DateTime: TDateTime; NumberOfDays: Integer): TDateTime;
{Функция предназначена для изменения даты (DateTime) путем добавления количества дней (NumberOfDays). Значение NumberOfDays может быть отрицательным.}
var
Y, M, D, CountDays: Word;
N: Integer;
Sign, NoBreak: Boolean;
begin
Sign := NumberOfDays >= 0;
DecodeDate(DateTime, Y, M, D);
N := NumberOfDays;
NoBreak := True;
if Sign then //Прибавить
begin
while(NoBreak) do
begin //Количество дней в месяце
CountDays := MonthDays[IsLeapYear(Y), M];
if (N + D) <= CountDays then //Если в пределах данного месяца
begin
Inc(D, N);
NoBreak := False;
end
else
begin
if M < 12 then
Inc(M, 1)
else
begin
M := 1;
Inc(Y, 1);
end;
N := N - (CountDays - D);
D := 0;
end;
end;
end
else //Отнять
begin
N := -N;
while(NoBreak) do
begin
if D > N then //Если в пределах данного месяца
begin
Dec(D, N);
NoBreak := False;
end
else
begin
if M > 1 then
Dec(M, 1)
else
begin
M := 12;
Dec(Y, 1);
end;
//Количество дней в месяце
CountDays := MonthDays[IsLeapYear(Y), M];
N := N - D;
D := CountDays;
end;
end;
end;
Result := EncodeDate(Y, M, D);
//Установить время из старой даты
ReplaceTime(Result, DateTime);
end;
← →
_Юрий © (2010-04-09 00:28) [4]
> Kerk © (08.04.10 20:29) [3]
Вариант [1] проще
← →
Германн © (2010-04-09 01:42) [5]
> _Юрий © (09.04.10 00:28) [4]
>
>
> > Kerk © (08.04.10 20:29) [3]
>
>
> Вариант [1] проще
>
Ничего-то ты не понял :)
← →
turbouser © (2010-04-09 02:06) [6]
> Kerk © (08.04.10 20:29) [3]
Надо все-таки распечатать как-нибудь и на стенку повесить :) Шедевр, все-таки :)
← →
Германн © (2010-04-09 02:08) [7]
> turbouser © (09.04.10 02:06) [6]
>
>
> > Kerk © (08.04.10 20:29) [3]
>
> Надо все-таки распечатать как-нибудь и на стенку повесить
> :) Шедевр, все-таки :)
>
У Ёжки уже всё распечатано и всё висит на стенке.
← →
turbouser © (2010-04-09 02:12) [8]
> Германн © (09.04.10 02:08) [7]
И что? Теперь к нему как в эрмитажЪ ходить?
← →
Германн © (2010-04-09 02:17) [9]
> turbouser © (09.04.10 02:12) [8]
>
>
> > Германн © (09.04.10 02:08) [7]
>
> И что? Теперь к нему как в эрмитажЪ ходить?
>
А почему бы и нет?
К тому же бумагу надо экономить. Лес не растёт так быстро. :)
← →
Германн © (2010-04-09 02:23) [10]Ну и вдобавок.
Правоприемникам Борланда стоит ввести в модуль DateUtils ещё одну функцию/процедуру. Типа DateTimeBetween. Чтобы любой нормальный пацан-кодер мог бы выводить в TLabel время, которое осталось до 00:00 12 декабря 2012 года. В годах, месяцах, днях, часах, минутах. Для особо озабоченных и в секундах.
:)
← →
test © (2010-04-09 04:30) [11]Германн © (09.04.10 02:23) [10]
Функция DaysBeetween. Кроме нее есть остальные которые считают разницу в милисекундах.
← →
boriskb © (2010-04-09 12:09) [12]> [3] Kerk © (08.04.10 20:29)
:)Черная Королева покачала головой: --
Вы, конечно, можете называть это чушью,
но я-то встречала чушь такую, что в сравнении с ней
эта кажется толковым словарем.
Л. Кэрролл, "Алиса в Зазеркалье"
← →
Anatoly Podgoretsky © (2010-04-09 12:16) [13]
> Надо все-таки распечатать как-нибудь и на стенку повесить
> :) Шедевр, все-таки :)
До шедевра не хватает sleep(86400000) в цикле Пока
← →
картман © (2010-04-09 12:31) [14]вот, существенно лучше Аватара
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.071 c