PHPackages                             devmakis/prodcalendar - 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. devmakis/prodcalendar

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

devmakis/prodcalendar
=====================

Библиотека для работы с производственным календарем России, Белоруссии, Казахстана и Узбекистана. Production calendar library of Russia, Belarus, Kazakhstan and Uzbekistan.

1.3.7(1y ago)87.9k↓42.1%4[1 PRs](https://github.com/devmakis/prodcalendar/pulls)MITPHPPHP &gt;=5.6

Since Mar 26Pushed 1y ago1 watchersCompare

[ Source](https://github.com/devmakis/prodcalendar)[ Packagist](https://packagist.org/packages/devmakis/prodcalendar)[ Docs](https://github.com/devmakis/prodcalendar)[ RSS](/packages/devmakis-prodcalendar/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (28)Used By (0)

Описание
--------

[](#описание)

Библиотека для работы с производственным календарем России, Белоруссии, Казахстана и Узбекистана на основе [xmlcalendar.ru](http://xmlcalendar.ru). Есть возможность реализовать свой клиент для получения данных от других источников.

Установка
---------

[](#установка)

`composer require devmakis/prodcalendar`

Примеры использования
---------------------

[](#примеры-использования)

```
use Devmakis\ProdCalendar\Cache\FileJsonCache;
use Devmakis\ProdCalendar\Clients\XmlCalendarClient;
use Devmakis\ProdCalendar\Calendar;
use Devmakis\ProdCalendar\Country;

$cache = new FileJsonCache('FILE_PATH', 3600);
$client = new XmlCalendarClient(Country::RUSSIA, $cache);
$calendar = new Calendar($client);
```

Проверяем является ли день нерабочим (выходным | праздничным | перенесенным праздником)

```
$calendar->isNonWorking(new DateTime('01-01-2018'));
$calendar->isWeekend(new DateTime('01-01-2018'));
$calendar->isHoliday(new DateTime('01-01-2018'));
$calendar->isTransferredHoliday(new DateTime('24-03-2020'));
```

Проверяем является ли день предпраздничным

```
$calendar->isPreHoliday(new DateTime('22-02-2018'));
```

Получаем количество рабочих | нерабочих дней за определенный период

```
$dateBegin = new DateTime('31-01-2018');
$dateEnd = new DateTime('08-05-2018');
$countWorkingDays = $calendar->countWorkingDaysForPeriod($dateBegin, $dateEnd);
$countNonWorkingDays = $calendar->countNonWorkingDaysForPeriod($dateBegin, $dateEnd);
```

Получаем производственный календарь за определенный год, узнаем количество рабочих | нерабочих дней в году, в месяце

```
$year2018 = $calendar->getYear('2018');
$countWorkingDays = $year2018->countWorkingDays();
$countNonWorkingDays = $year2018->countNonWorkingDays();
$countWorkingDaysInMay = $year2018->getMonth('05')->countWorkingDays();
```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance41

Moderate activity, may be stable

Popularity32

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 91.5% 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 ~95 days

Recently: every ~69 days

Total

27

Last Release

492d ago

Major Versions

1.3.7 → 2.0.0.x-dev2025-01-11

PHP version history (2 changes)v1.0.0PHP &gt;=5.6

2.0.0.x-devPHP &gt;=8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/0e0079072abb49e6ec07ef544394ae216c981f047976547ac2402e476320e9a1?d=identicon)[devmakis](/maintainers/devmakis)

---

Top Contributors

[![devmakis](https://avatars.githubusercontent.com/u/37435382?v=4)](https://github.com/devmakis "devmakis (54 commits)")[![mrden](https://avatars.githubusercontent.com/u/331554?v=4)](https://github.com/mrden "mrden (2 commits)")[![shapilokk](https://avatars.githubusercontent.com/u/2445760?v=4)](https://github.com/shapilokk "shapilokk (2 commits)")[![TiGR](https://avatars.githubusercontent.com/u/281226?v=4)](https://github.com/TiGR "TiGR (1 commits)")

---

Tags

calendarproductionrussianworkingworking-calendarproduction-calendarпроизводственныйкалендарьРФпроизводственный календарьxmlcalendarBelarusKazakhstanРоссияКазахстанУзбекистанБеларусия

### Embed Badge

![Health badge](/badges/devmakis-prodcalendar/health.svg)

```
[![Health](https://phpackages.com/badges/devmakis-prodcalendar/health.svg)](https://phpackages.com/packages/devmakis-prodcalendar)
```

###  Alternatives

[eluceo/ical

The eluceo/iCal package offers an abstraction layer for creating iCalendars. You can easily create iCal files by using PHP objects instead of typing your \*.ics file by hand. The output will follow RFC 5545 as best as possible.

1.2k17.5M47](/packages/eluceo-ical)[spatie/icalendar-generator

Build calendars in the iCalendar format

6787.4M9](/packages/spatie-icalendar-generator)[spatie/laravel-google-calendar

Manage events on a Google Calendar

1.4k1.5M21](/packages/spatie-laravel-google-calendar)[league/period

Time range API for PHP

7335.4M21](/packages/league-period)[wapmorgan/morphos

A morphological solution for Russian and English language written completely in PHP. Provides classes to inflect personal names, geographical names, decline and pluralize nouns, generate cardinal and ordinal numerals, spell out money amounts and time.

8351.3M7](/packages/wapmorgan-morphos)[aeon-php/calendar

PHP type safe, immutable calendar library

2079.7M16](/packages/aeon-php-calendar)

PHPackages © 2026

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