yakoffka/airac-calc

Laravel 包用于计算 AIRAC 循环

0.2.5 2024-05-28 11:57 UTC

This package is auto-updated.

Last update: 2024-09-04 00:23:56 UTC


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

来源