yakoffka / airac-calc
Laravel 包用于计算 AIRAC 循环
0.2.5
2024-05-28 11:57 UTC
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 - 航空信息规范与控制(Regulation and Control of Aeronautical Information)。一年包含 13 个循环,有时为 14 个(1976 年、1998 年和 2020 年)。
库考虑闰年,但不考虑 UTC 以外的生效时间区域。
警告:计算结果仅对当前世纪日期有效。
安装
composer require yakoffka/airac-calc
使用
包提供四种方法,接受可选的日期字符串参数 $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