yakoffka/airac-cycle-dates-for-laravel

This package is abandoned and no longer maintained. The author suggests using the https://github.com/yakoffka/AIRAC-calc package instead.

Laravel package for calculate AIRAC cycles

0.2.5 2024-05-28 11:57 UTC

This package is auto-updated.

Last update: 2024-05-28 11:58:08 UTC


README

Общие сведения

AIRAC - система заблаговременного уведомления об изменениях аэронавигационных данных по единой таблице дат вступления их в силу.

AIRAC - Aeronautical Information Regulation And Control (Регламентирование и контроль аэронавигационной информации). Один год содержит 13, реже 14 (1976, 1998 и 2020) циклов AIRAC.

Библиотека учитывает високосные года, но не учитывает регионы, в которых действует время вступления в силу, отличное от UTC.

ПРЕДОСТЕРЕЖЕНИЕ: Результаты вычислений корректны только для дат текущего столетия.

Установка

composer require yakoffka/airac-calc

Использование

Пакет предоставляет четыре метода, принимающих в качестве необязательного аргумента дату в строковом представлении ('Y-m-d') $dateString:

  • getCycleDay(?string $dateString): int (от 1 до 28) - получение номера дня в цикле AIRAC для переданной даты;
  • getCurrentCycle(?string $dateString): string - получение идентификатора текущего цикла AIRAC для переданной даты;
  • getPrevCycle(?string $dateString): string - получение идентификатора цикла AIRAC, предшествующего текущему для переданной даты.
  • getNextCycle(?string $dateString): string - получение идентификатора цикла AIRAC, следующего за текущим для переданной даты.

При отсутствии параметра расчет ведется относительно текущей даты.

примеры использования с указанием даты:

$date = \Carbon\Carbon::createFromDate(2023, 2, 8);

AiracCalc::getCycleDay($date);         //  14
AiracCalc::getCurrentCycle($date);     //  "2301"
AiracCalc::getPrevCycle($date);        //  "2213"
AiracCalc::getNextCycle($date);        //  "2302"

примеры использования без указания даты:

AiracCalc::getCycleDay();               //  14
AiracCalc::getCurrentCycle();           //  "2301"
AiracCalc::getPrevCycle();              //  "2213"
AiracCalc::getNextCycle();              //  "2302"

Также пакет предоставляет два метода, принимающих обязательный строковый параметр с идентификатором цикла AIRAC:

  • getPrevByAirac(?string $airac): string - получение идентификатора цикла AIRAC, предшествующего переданному.
  • getNextByAirac(?string $airac): string - получение идентификатора цикла AIRAC, следующего за переданным.

примеры использования:

AiracCalc::getPrevByAirac('2301');       //  "2302"
AiracCalc::getNextByAirac('2301');       //  "2213"

Метод getNumberCyclesPerYear(?string $year) [доступен с версии 0.2.1]

Получение количества циклов AIRAC в указанном (по умолчанию - в текущем) году

примеры использования:

AiracCalc::getNumberCyclesPerYear('2020'); //  14
AiracCalc::getNumberCyclesPerYear('2021'); //  13

Метод isValidCycle(string $cycle) [доступен с версии 0.2.1]

Метод, проверяющий корректность номера цикла AIRAC

примеры использования:

AiracCalc::isValidCycle('0001');       //  true
AiracCalc::isValidCycle('2302');       //  true
AiracCalc::isValidCycle('2300');       //  false
AiracCalc::isValidCycle('234v');       //  false

Дополнительный метод showEffectiveDates() [доступен с версии 0.0.4]

Пакет предоставляет также дополнительный метод showEffectiveDates(), который выводит календарь циклов на запрошенный период

пример использования:

// в качестве необязательных параметров данный метод принимает строки начала и конца требуемого интервала

AiracCalc::showEffectiveDates('2023-01-01', '2024-01-01');

результатом выполнения будет вывод всех дат начала циклов, входящих в данный интервал:

          2020 year
        2001 2020-01-02
        2002 2020-01-30
        2003 2020-02-27
        2004 2020-03-26
        2005 2020-04-23
        2006 2020-05-21
        2007 2020-06-18
        2008 2020-07-16
        2009 2020-08-13
        2010 2020-09-10
        2011 2020-10-08
        2012 2020-11-05
        2013 2020-12-03
        2014 2020-12-31
        
          2021 year
        2101 2021-01-28
        2102 2021-02-25
        2103 2021-03-25
        2104 2021-04-22
        2105 2021-05-20
        2106 2021-06-17
        2107 2021-07-15
        2108 2021-08-12
        2109 2021-09-09
        2110 2021-10-07
        2111 2021-11-04
        2112 2021-12-02
        2113 2021-12-30
        
          2022 year
        2201 2022-01-27
        2202 2022-02-24
        2203 2022-03-24
        2204 2022-04-21
        2205 2022-05-19
        2206 2022-06-16
        2207 2022-07-14
        2208 2022-08-11
        2209 2022-09-08
        2210 2022-10-06
        2211 2022-11-03
        2212 2022-12-01
        2213 2022-12-29
        
          2023 year
        2301 2023-01-26
        2302 2023-02-23
        2303 2023-03-23
        2304 2023-04-20
        2305 2023-05-18
        2306 2023-06-15
        2307 2023-07-13
        2308 2023-08-10
        2309 2023-09-07
        2310 2023-10-05
        2311 2023-11-02
        2312 2023-11-30
        2313 2023-12-28
        
          2024 year
        2401 2024-01-25
        2402 2024-02-22
        2403 2024-03-21
        2404 2024-04-18
        2405 2024-05-16
        2406 2024-06-13
        2407 2024-07-11
        2408 2024-08-08
        2409 2024-09-05
        2410 2024-10-03
        2411 2024-10-31
        2412 2024-11-28
        2413 2024-12-26

источники