Delphi. Даты…

На предыдущую страницу…

Среда: Delphi 10.2 Tokyo


Важно! Все (ниже перечисленные) функции ориентированы (если не «сказано» иное) на формат дат: в строковом представлении: ДД.ММ.ГГГГ; в целочисленном представлении: ГГГГММДД.

В процессе формирования…


  • Get_FirstYear_for_Greg — получить самый первый год, корректный для использования функций работы с датами;
  • Get_CountDays_In_Month — вычислить кол-во дней в заданном месяце;
  • IsDateYMD — проверить корректность даты (Год, Месяц, День);
  • DateYMD_to_DateStr — конвертировать Год, Месяц, День (даты) — в строковое представление даты: ДД.ММ.ГГГГ;

function Get_FirstYear_for_Greg : integer;
//Получить самый первый год, корректный для использования функций работы с датами
begin
  Result:=1582;
end;

function Get_CountDays_In_Month(Ye, Mo : integer) : integer;
//Вычислить кол-во дней в заданном месяце
begin
  Result:=0;
  if Ye>0 then begin
     if (Mo>0) and (Mo<=12) then begin
        Result:=30;
        if Mo=2 then begin
           Result:=28;
           if SysUtils.IsLeapYear(Ye) then Result:=29;
        end
        else begin
          if (Mo in [1,3,5,7,8,10,12]) then Result:=31;
        end;
      end;
  end;
end;

function IsDateYMD(Ye,Mo,Da : integer) : boolean;
//Проверить корректность даты (Год, Месяц, День) 
{
  Входные параметры:
    Ye - Год (даты),
    Mo - Месяц (даты),
    Da - День (даты).
  Возвращаемое значение: TRUE - дата корректна, FALSE - в противном случае
}
begin
  Result:=false;
  if (Ye>=Get_FirstYear_for_Greg) then begin
     if (Ye<=3100) then begin
        if (Mo>0) and (Mo<=12) then begin
           if (Da>0) then begin
              if (Da<=Get_CountDays_In_Month(Ye,Mo)) then begin
                 Result:=true;
              end;
           end;
        end;
     end;
  end;
end;

function DateYMD_to_DateStr(Ye,Mo,Da : integer; sSep : string = '.') : string;
//Конвертировать Год, Месяц, День - в строковое представление даты: ДД.ММ.ГГГГ
{
  Входные параметры:
    Ye - Год (даты),
    Mo - Месяц (даты),
    Da - День (даты),
    sSep - символ разделитель составных частей даты в строковом представлении.
  Возвращаемое значение: Дата в строковом представлении
}
begin
  Result:='';
  if IsDateYMD(Ye,Mo,Da) then begin
     sSep:=trim(sSep);
     if length(sSep)<=0 then sSep:=DateSeparator_my;
     Result :=   BuildString(IntToStr(Da),2, ORD('0'), 0)
               + sSep
               + BuildString(IntToStr(Mo),2, ORD('0'), 0)
               + sSep
               + BuildString(IntToStr(Ye),4, ORD('0'), 0);
  end;
end;



Продолжение следует…


На предыдущую страницу…


Дата: 11.02.2022