Skip to content

Latest commit

 

History

36 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Библиотека для расчетов циклов AIRAC для фреймворка Laravel

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

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

источники

About

Библиотека для расчетов циклов AIRAC для фреймворка Laravel

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages