FAQ VCL
Дата и время

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как получить первый день квартала?

function FirstQDay(fqDate: TDateTime): TDateTime;
var
  qiYear, qiMonth, qiDay: Word;
begin
  if fqDate = 0 then
    Result := fqDate
  else
  begin
    DecodeDate(fqDate, qiYear, qiMonth, qiDay);
    qiMonth := qiMonth - (qiMonth + 2) mod 3;
    Result := EncodeDate(qiYear, qiMonth, 1);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DateToStr(FirstQDay(Now)));
end;


Как получить последний день квартала?

function LastQDay(lqDate: TDateTime): TDateTime;

  function FirstMDay(fmDate: TDateTime): TDateTime;
  var
    fiYear, fiMonth, fiDay: Word;
  begin
    if fmDate = 0 then
      Result := fmDate
    else
    begin
      DecodeDate(fmDate, fiYear, fiMonth, fiDay);
      Result := EncodeDate(fiYear, fiMonth, 1);
    end;
  end;

begin
  if lqDate = 0 then
    Result := lqDate
  else
    Result := FirstMDay(FirstQDay(lqDate)+100)-1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DateToStr(LastQDay(Now)));
end;

При использовании материала - ссылка на сайт обязательна