yakoffka / airac-cycle-dates-for-laravel
Laravel package for calculate AIRAC cycles
Requires
- php: ^8.0
- nesbot/carbon: ^3.4.0
Requires (Dev)
- nunomaduro/collision: ^8.1.0
- orchestra/testbench: ^v9.1.0
- phpunit/phpunit: ^11.0.1
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