PHPackages                             webmasterskaya/production-calendar - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. webmasterskaya/production-calendar

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

webmasterskaya/production-calendar
==================================

Production calendar of Russian Federation

3.0.0(1y ago)15(MIT or GPL-3.0-or-later)PHPPHP &gt;=7.4CI passing

Since Mar 1Pushed 1y agoCompare

[ Source](https://github.com/webmasterskaya/production-calendar)[ Packagist](https://packagist.org/packages/webmasterskaya/production-calendar)[ RSS](/packages/webmasterskaya-production-calendar/feed)WikiDiscussions master Synced yesterday

READMEChangelog (5)Dependencies (2)Versions (12)Used By (0)

Производственный календарь
==========================

[](#производственный-календарь)

PHP библиотека, которая определяет рабочие, праздничные, выходные и нерабочие дни, в соответствии с производственным календарём Российской Федерации 2013-2025гг
Данные предоставлены сайтом

- ✔ Работает оффлайн
- ✔ Автономный (базу можно актуализировать самостоятельно)
- ✔ База весит меньше 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`, необходимо использовать корректный формат даты. Пояснение даёт раздел [«Форматы даты и времени»](https://www.php.net/manual/datetime.formats.php).
- `$weekend` **(array)** - Массив с номерами дней, которые считаются выходными (0 - воскресенье, 6 - суббота). По умолчанию: `[6, 0]`.
- `$format` **(string)** - Формат результирующей строки даты. Подробнее: . По умолчанию: `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)

**Обновить данные за указанный год**

```
Updater::update($year); //void
```

**Обновить все данные, начиная с 2013 года и до текущего**

```
Updater::updateAll(); //void
```

Обновление справочника дат
--------------------------

[](#обновление-справочника-дат)

```
composer calendar-update  # обновит данные за текущий год
composer calendar-update 2024 # обновит данные за указанный год
composer calendar-update all # обновит все данные за промежуток с 2013 по текущий год
```

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance42

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~288 days

Recently: every ~427 days

Total

11

Last Release

473d ago

Major Versions

1.1.0 → 2.0.02021-04-29

2.0.2 → 3.0.02025-01-24

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16020878?v=4)[Artem Vasilev](/maintainers/kernusr)[@kernusr](https://github.com/kernusr)

---

Top Contributors

[![carono](https://avatars.githubusercontent.com/u/6193985?v=4)](https://github.com/carono "carono (18 commits)")[![kernusr](https://avatars.githubusercontent.com/u/16020878?v=4)](https://github.com/kernusr "kernusr (18 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/webmasterskaya-production-calendar/health.svg)

```
[![Health](https://phpackages.com/badges/webmasterskaya-production-calendar/health.svg)](https://phpackages.com/packages/webmasterskaya-production-calendar)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
