Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить дату по Юлианскому календарю?

Delphi , Синтаксис , Дата и Время

Code:
function julian(year, month, day: Integer): real;
var
yr, mth: Integer;
noleap, leap, days, yrs: Real;
begin
if year < 0 then yr := year + 1 else yr := year;
mth := month;
if (month < 3) then
   begin
     mth := mth + 12;
     yr := yr - 1;
   end;
yrs := 365.25 * yr;
if ((yrs < 0) and (frac(yrs) <> 0)) then yrs := int(yrs) - 1 else yrs := int(yrs);
days := int(yrs) + int(30.6001 * (mth + 1)) + day - 723244.0;
if days < -145068.0 then julian := days
else
begin
   yrs := yr / 100.0;
   if ((yrs < 0) and (frac(yrs) <> 0)) then yrs := int(yrs) - 1;
   noleap := int(yrs);
   yrs := noleap / 4.0;
   if ((yrs < 0) and (frac(yrs) <> 0)) then yrs := int(yrs) - 1;
   leap := 2 - noleap + int(yrs);
   julian := days + leap;
end;
end;

Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Прекрасный фрагмент кода!

Это функция на языке Pascal (специально для Delphi), которая конвертирует дату из григорианского календаря в юлианский календарь. Юлианский календарь был введен Иулием Цезарем в 45 г до н. э. и оставался стандартным календарём до 15 октября 1582 года, когда он был заменён григорианским календарём.

Вот разбивка того, что код делает:

  1. Функция принимает три параметра: year, month и day, которые представляют дату в григорианском календаре.
  2. Сначала функция корректирует год, если он отрицательный (т. е., перед 1 CE).
  3. Если месяц является январём или февралём, она вычитает 12 из месяца и уменьшает год на 1, эффективно перемещаясь в предыдущий год в юлианском календаре.
  4. Она рассчитывает количество дней с начала эры Юлия (1 января 4713 г до н. э.) с помощью формулы, которая включает год, месяц, день и некоторые константы.
  5. Если расчетное значение меньше -145068, то это считается високосным годом, поэтому функция добавляет дополнительный день для учета високосного года.
  6. Наконец, она возвращает дату Юлия в виде вещественного числа.

Код использует некоторые язык-специфические признаки Pascal, такие как:

  • Функцию frac, которая возвращает дробную часть числа (например, frac(3.5) бы вернула 0,5).
  • Функцию int, которая конвертирует вещественное число в целое.
  • Конструкции if и begin...end, которые используются для условных операторов и блочного выполнения кода.

В целом, это хорошо написанный фрагмент кода, который эффективно реализует алгоритм конвертации даты из григорианского календаря в юлианский календарь. Поздравления автору!

Статья описывает алгоритм вычисления даты по Юлианскому календарю на языке программирования Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:12:09/0.0033221244812012/0