Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение первого и последнего дня в месяце [D7, XP]


ivc_vetal ©   (2006-01-16 16:59:00) 

Как определить первый и последний день месяца?


Ega23   (2006-01-24 19:03:00) [1]

function TfmMain.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;


Алхимик   (2006-01-24 18:49:00) [2]


> [6] Ega23 ©   (16.01.06 17:21)
> Не забывайте шедевр IncDay!

Кинь ссылку, а то уже забываю :)


Джо   (2006-01-24 15:28:00) [3]

> [6] Ega23 ©   (16.01.06 17:21)
> Не забывайте шедевр IncDay!

Он всегда в наших сердцах! :)


Ega23   (2006-01-16 17:21:00) [4]

Не забывайте шедевр IncDay!


ivc_vetal   (2006-01-16 17:13:00) [5]

thanks!!!!!!!!


Gero   (2006-01-16 17:10:00) [6]

date/time routines


ivc_vetal   (2006-01-16 17:08:00) [7]

Уважаемые мастера, а подскажите вообще где в Help'е можно посмотреть все функции по датам? Заранее благодарен.


Sergey13   (2006-01-16 17:01:00) [8]

Ну первый то наверное нетрудно. 8-)
К нему IncMonth-1


Gero   (2006-01-16 17:00:00) [9]

Первый всегда имеет первое число, а последний — в зависимости от месяца и года (28-31).


Наверх

Титульная страница Поиск, карта сайта Написать письмо