yue / yeararound
解析任何语言的任何月份,然后获取季节名称
0.0.4
2019-04-01 04:06 UTC
Requires
- nesbot/carbon: ^1.36.1
Requires (Dev)
- phpunit/phpunit: ^7.0
README
- 支持英语、中文、日语、法语、德语和西班牙语
- 支持自动输出中/英/日/德/法/西的月份与季节
- 支持星座
- 支持根据日期获取星座,可输出每个月可能的星座
- 解析任意给定的日期来判定是否为一年中的某个季节的开始和结束
- 解析任意给定的日期来判断是否为一年中的某个季节的开始和结束
- 当一年不是从一月开始时,例如澳大利亚的财政年度
- 方便处理那些不是从一月开始的年的情况,比如财政年度可能是从7月份开始
- 在.env文件中的配置,兼容Laravel框架
- 可以在.env文件中灵活定义配置参数,可以在Laravel中直接使用
安装
使用Composer
$ composer require yue/yeararound
使用说明
灵活的自动配置,兼容Laravel
- YEAR_AROUND_START_MONTH=7 // 全局配置以7月份作为起始年,默认或缺失此配置时,起始月份为1月
- YEAR_AROUND_HEMISPHERE=1 // 在北半球使用;南半球使用设置为2则季节会反转
- YEAR_AROUND_FORMAT_SEPARATOR="-" // 年月之间的分隔符
- YEAR_AROUND_LANGUAGE="EN" // 默认语言:英语;支持CN/ES/FR/DE/JP 默认语言英语
/** File: .env.example */
YEAR_AROUND_START_MONTH=1
YEAR_AROUND_HEMISPHERE=1
YEAR_AROUND_FORMAT_SEPARATOR="-"
YEAR_AROUND_LANGUAGE="EN"
年月日
use Yue\YearAround\Context; use Yue\YearAround\Contracts\ISeason; use Yue\YearAround\Contracts\IMonth; use Yue\YearAround\Utilities\DateParser; $year = Context::CreateYear(2018); // Check if the leap year $isLeapYear = $year->isLeapYear(); // false 是否为闰年 $seasons = $year->getSeasons(); foreach($seasons as $season){ /** @var ISeason $season */ var_dump($season->getName()); // Get months of each season, it will be adjusted by hemisphere setting in .env // 获取每个季度或者季节包含的月份 会根据 .env 文件中半球的设置自动生成 $months = $season->getMonths(); foreach($months as $month){ /** @var IMonth $month */ var_dump($month); } } // Can get the end day of any month in any year // 可以获取某个月在任何年的最后一天 $feb = DateParser::GetMonth(2); $lastDayInt = $feb->getLastDay(2000)->day; // It's 29 得到闰月值 29 $lastDayInt = $feb->getLastDay(2001)->day; // It's 28 得到闰月值 28
获取星座
use Yue\YearAround\Context; use Yue\YearAround\Contracts\IConstellation; use Yue\YearAround\Utilities\DateParser; use Yue\YearAround\Utilities\DictionaryFactory; $constellation = Context::CreateConstellation(1,11,DictionaryFactory::GetInstance('en')); var_dump($constellation->getName()); // Capricorn 摩羯座 var_dump($constellation->getFistDay()->format('d/M')); // 22/Dec 从12月22日 var_dump($constellation->getLastDay()->format('d/M')); // 19/Jan 至1月19日 // Get previous and next 获取前一个星座和下一个星座的名称 var_dump($constellation->prev()->getName()); // Sagittarius 前一个星座是射手座 var_dump($constellation->next()->getName()); // Aquarius 下一个星座是水瓶座 // Get constellation by give tpye 获取指定的星座 $leo = Context::CreateConstellation(null, null, null, IConstellation::Leo); var_dump($leo->getName()); // Leo 狮子座
判断是否为季度开始/结束月份
use Yue\YearAround\Context; $monthInt = 3; $monthString1 = '3'; $monthString2 = '03'; $monthString3 = 'Mar'; $monthString4 = 'March'; $isEndOfAnySeason1 = Context::IsEndOfSeason($monthInt); // True $isEndOfAnySeason2 = Context::IsEndOfSeason($monthString1); // True $isEndOfAnySeason3 = Context::IsEndOfSeason($monthString2); // True $isEndOfAnySeason4 = Context::IsEndOfSeason($monthString3); // True $isEndOfAnySeason5 = Context::IsEndOfSeason($monthString4); // True
判断是否为年度开始/结束月份
- 它指的是配置中的YEAR_AROUND_START_MONTH;默认为1(一月)
- 将根据配置文件中的YEAR_AROUND_START_MONTH项来判断年度的起始,默认为1
use Yue\YearAround\Context; $year = Context::CreateYear(2018); foreach ($year->getMonths() as $month) { /** * @var \Yue\YearAround\Contracts\IMonth $month */ var_dump($month); // Jan/2018; Feb/2018; ... } // Sometime the first month of the year might not January // 有时候一月并非首月, 比如澳洲的Financial Year是从7月开始到第二年6月结束 $AustralianFinancialYear = Context::CreateYear(2018, 7); // 2018财政年从7月开始 foreach ($AustralianFinancialYear->getMonths() as $month) { /** * @var \Yue\YearAround\Contracts\IMonth $month */ var_dump($month); // from Jul/2018; Aug/2018; ... Jan/2019; Feb/2019 } $AustralianFinancialYear->getFirstMonth(); // Jul/2018 获取年度首月 2018年7月 $AustralianFinancialYear->getLastMonth(); // Jun/2019 获取年度末月 2019年6月
测试
- composer test
- 运行composer test命令即可
贡献
- 分支
- 创建你的功能分支(
git checkout -b my-new-feature
) - 进行你的更改
- 运行测试,如有必要添加自己的代码的新测试(
phpunit
) - 提交你的更改(
git commit -am 'Added some feature'
) - 推送到分支(
git push origin my-new-feature
) - 创建新的Pull Request