定制 webmasterskaya/production-calendar 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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 по текущий год 

统计信息

  • 总下载量: 5
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 4
  • 开发语言: PHP

其他信息

  • 授权协议: (MIT or GPL-3.0-or-later) e004f8832733b1a0b7290b5761c6fb16199c2fee
  • 更新时间: 2020-05-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固