webmasterskaya/production-calendar
Composer 安装命令:
composer require webmasterskaya/production-calendar
包简介
Production calendar of Russian Federation
README 文档
README
PHP библиотека, которая определяет рабочие, праздничные, выходные и нерабочие дни, в соответствии с производственным календарём Российской Федерации 2013-2025гг
Данные предоставлены сайтом http://www.consultant.ru/
- ✔ Работает оффлайн
- ✔ Автономный (базу можно актуализировать самостоятельно)
- ✔ База весит меньше 5 КБ
- ✔ Не тянет зависимости
- ✔ Максимально документированный код
Начало использования
Добавьте пакет в зависимости проекта
composer require webmasterskaya\ProductionCalendar
Как работает
Класс Calendar реализует паттерн singletone. Любой вызов статичного метода приводит к инициализации экземпляра класса, если он ещё не был инициализирован. Все последующие вызовы будут работать с этим экземпляром.
Проверка дат осуществляется перемещением внутреннего указателя. При инициализации класса, указатель устанавливается на дату, переданную в аргументах метода.
Если аргумент даты равен null, то указатель не смещается и используется последнее его положение.
Проверить текущее положение указателя можно, вызвав метод date():
use \Webmasterskaya\ProductionCalendar\Calendar; Calendar::date(); // вернёт объект \DateTime, на который установлен внутренний указатель класса
Основные понятия
- Рабочий день (
isWorking() === true) - день, в который однозначно работают. - Выходной день (
isWeekend() === true) - день, в который однозначно не работают (праздник, суббота и воскресение, кроме рабочих суббот). - Праздничный день (
isHoliday() === true) - день, в который однозначно никто не работает, т.к. это праздник (Новый Год, День Победы). - Предпраздничный день (
isPreHoliday() === true) - день, в который продолжительность работы сокращается на один час. - Нерабочий день (
isNoWorking() === true) - в 2020 году появилось новое определение "Нерабочий день". Нерабочие дни введены в соответствии с Указами Президента РФ от 25.03.2020 N 206, от 02.04.2020 N 239, от 28.04.2020 N 294, от 29.05.2020 N 345, от 23.04.2021 N 242
Примеры использования
В примерах использования используются следующие аргументы:
$date(null|string|int|\DateTime) - дата, на которую будет установлен указатель.- При значении
nullпроверка будет осуществляться от последней даты под курсором. Если под курсором нет даты, проверка начнётся от текущей даты. - При передаче даты, как
string, необходимо использовать корректный формат даты. Пояснение даёт раздел «Форматы даты и времени».
- При значении
$weekend(array) - Массив с номерами дней, которые считаются выходными (0 - воскресенье, 6 - суббота). По умолчанию:[6, 0].$format(string) - Формат результирующей строки даты. Подробнее: https://www.php.net/manual/datetime.format.php. По умолчанию:Y-m-d
Варианты объявления $date:
$date = '06.05.2020'; // Строкой $date = '2020-05-13'; // Строкой в другом формате $date = 1582146000; // Unix Timestamp $date = new \DateTime('05.11.2020'); // Объект \DateTime
Проверка конкретной даты
Является ли день рабочим
Calendar::isWorking($date, [6, 0]); //bool /* или */ Calendar::isWorking($date); //bool /* или */ Calendar::isWorking(); //bool
Является ли день праздничным
Calendar::isHoliday($date); //bool /* или */ Calendar::isHoliday(); //bool
Является ли день предпраздничным
Calendar::isPreHoliday($date); //bool /* или */ Calendar::isPreHoliday(); //bool
Является ли день не рабочим
Calendar::isNoWorking($date); //bool /* или */ Calendar::isNoWorking(); //bool
Поиск по дате
Найти ближайший рабочий день, за указанной датой.
Calendar::find($date)->working()->format($format); //string
Найти ближайший выходной день, за указанной датой.
Calendar::find($date)->holiday()->format($format); //string
Найти ближайший предпраздничный день, за указанной датой.
Calendar::find($date)->preHoliday()->format($format); //string
Найти ближайший нерабочий день, за указанной датой.
Calendar::find($date)->noWorking()->format($format); //string
Получить список дат
Получить список всех выходных дней за указанный промежуток дат
Calendar::getHolidaysListByInterval($date_from, $date_to, $format); //array
Получить список всех рабочих дней за указанный промежуток дат
Calendar::getWorkingListByInterval($date_from, $date_to, $format); //array
Получить список всех нерабочих дней за указанный промежуток дат
Calendar::getNoWorkingListByInterval($date_from, $date_to, $format); //array
Получить список всех предпраздничных дней за указанный промежуток дат
Calendar::getPreHolidayListByInterval($date_from, $date_to, $format); //array
Описание методов класса Updater
Обновить данные за указанный год
Updater::update($year); //void
Обновить все данные, начиная с 2013 года и до текущего
Updater::updateAll(); //void
Обновление справочника дат
composer calendar-update # обновит данные за текущий год composer calendar-update 2024 # обновит данные за указанный год composer calendar-update all # обновит все данные за промежуток с 2013 по текущий год
webmasterskaya/production-calendar 适用场景与选型建议
webmasterskaya/production-calendar 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 05 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 webmasterskaya/production-calendar 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 webmasterskaya/production-calendar 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: (MIT or GPL-3.0-or-later) e004f8832733b1a0b7290b5761c6fb16199c2fee
- 更新时间: 2020-05-20