PHPackages                             gozoro/russian-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. gozoro/russian-calendar

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

gozoro/russian-calendar
=======================

Производственный календарь РФ на основе xmlcalendar.ru. Russian working calendar based on the xmlcalendar.ru.

v1.0.0(3mo ago)69.3k↓38.5%11MITPHPPHP &gt;=5.5.9

Since Dec 15Pushed 3mo ago1 watchersCompare

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

READMEChangelogDependenciesVersions (7)Used By (1)

russian-calendar
================

[](#russian-calendar)

Производственный календарь РФ на основе xmlcalendar.ru для PHP. Russian working calendar based on the xmlcalendar.ru for PHP.

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

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

```
	composer require gozoro/russian-calendar

```

Использование
-------------

[](#использование)

```
$calendar = new \gozoro\russian_calendar\RussianCalendar('ru');

$date = '2019-01-02';
print "Дата: ".$date."\n";
print "ЭТО РАБОЧИЙ ДЕНЬ? ".($calendar->checkWorkingDay($date)?"ДА":"НЕТ")."\n"; // НЕТ

print "ЭТО ПОЛНЫЙ РАБОЧИЙ ДЕНЬ? ".($calendar->checkFullWorkingDay($date)?"ДА":"НЕТ")."\n"; // НЕТ

print "ЭТО КОРОТКИЙ РАБОЧИЙ ДЕНЬ? ".($calendar->checkShortWorkingDay($date)?"ДА":"НЕТ")."\n"; // НЕТ

print "ЭТО ВЫХОДНОЙ ДЕНЬ? ".($calendar->checkWeekend($date)?"ДА":"НЕТ")."\n"; // ДА

print "ЭТО ПРАЗДНИЧНЫЙ ДЕНЬ? ".($calendar->checkHoliday($date)?"ДА":"НЕТ")."\n"; // ДА

print "НАЗВАНИЕ ПРАЗДНИКА: ".$calendar->getHolidayName($date)."\n"; // Новогодние каникулы (в ред. Федерального закона от 23.04.2012 № 35-ФЗ)

print "СЛЕДУЮЩИЙ РАБОЧИЙ ДЕНЬ: ".$calendar->getNextWorkingDay($date)."\n"; // 2019-01-09
```

**Выходные дни**

По умолчанию выходными считаются суббота и воскресенье. Это можно изменить указав выходные дни при вызове методов. В этом случае выходными днями будут считаться только указанные дни недели.

```
$my_weekends = [0]; // выходной только воскресенье, суббота рабочий день
$calendar->checkWorkingDay($date, $my_weekends);
```

**Продолжительность выходных и праздников**

Дополнительно можно получить список последовательных дат выходного или праздничного периода.

Получение списка дат выходного периода

```
$weekends = [0,6];

// полный список
print_r($calendar->getWeekendDates($date, $weekends, true);

//Array
//(
//    [0] => 2018-12-30
//    [1] => 2018-12-31
//    [2] => 2019-01-01
//    [3] => 2019-01-02
//    [4] => 2019-01-03
//    [5] => 2019-01-04
//    [6] => 2019-01-05
//    [7] => 2019-01-06
//    [8] => 2019-01-07
//    [9] => 2019-01-08
//)

// только даты больше чем $date и даты в формате d.m.Y
print_r($calendar->getWeekendDates($date, $weekends, false, 'd.m.Y');

//Array
//(
//    [0] => 03.01.2019
//    [1] => 04.01.2019
//    [2] => 05.01.2019
//    [3] => 06.01.2019
//    [4] => 07.01.2019
//    [5] => 08.01.2019
//)
```

Получение списка дат праздничного периода

```
// полный список
print_r($calendar->getHolidayDates($date, true);

// Array
//(
//    [0] => 2019-01-01
//    [1] => 2019-01-02
//    [2] => 2019-01-03
//    [3] => 2019-01-04
//    [4] => 2019-01-05
//    [5] => 2019-01-06
//    [6] => 2019-01-07
//    [7] => 2019-01-08
//)

// только даты больше чем $date и даты в формате d.m.Y
$holidayArray = $calendar->getHolidayDates($date, false, 'd.m.Y');
print_r($holidayArray);

//Array
//(
//    [0] => 03.01.2019
//    [1] => 04.01.2019
//    [2] => 05.01.2019
//    [3] => 06.01.2019
//    [4] => 07.01.2019
//    [5] => 08.01.2019
//)

// Сколько дней осталось отдыхать?
print count($holidayArray); // 6
```

**Переносы выходных**

Выходные могут перенести Постановлением Правительства РФ, например в 2025 году, с субботы 1 ноября на понедельник 3 ноября.

```
// С какой даты перенесен выходной день 2025-11-03?
print $calendar->getWeekendFrom('2025-11-03'); // '2025-11-01'

// На какую дату перенесен выходной день 2025-11-01?
print $calendar->getWeekendTo('2025-11-01'); // '2025-11-03'
```

**Кэширование**

По умолчанию для получения XML-файлов с данными, класс делает запросы к `raw.githubusercontent.com/xmlcalendar/data/...`. Чтобы класс не делал долгих запросов к сайту, можно закэшировать XML-файл локально. Для этого в конструкторе нужно указать путь к директории, куда будет скопирован XML-файл и время кэша в секундах.

```
$cacheFolder = '/var/www/site/runtime/xmlcalendar';
$cacheDuration = 60*60*24; // кэш файла на сутки
$calendar = new \gozoro\russian_calendar\RussianCalendar('ru', $cacheFolder, $cacheDuration);
```

**Названия праздников на английском**

```
$calendar = new \gozoro\russian_calendar\RussianCalendar('ru:en');
```

**Производственные календари других стран**

```
// Казахстан
$calendar = new \gozoro\russian_calendar\RussianCalendar('kz');

// Беларусь
$calendar = new \gozoro\russian_calendar\RussianCalendar('by');

// Узбекистан
$calendar = new \gozoro\russian_calendar\RussianCalendar('uz');

// Украина
$calendar = new \gozoro\russian_calendar\RussianCalendar('uk');
```

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance78

Regular maintenance activity

Popularity30

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~445 days

Recently: every ~542 days

Total

6

Last Release

118d ago

Major Versions

v0.0.6 → v1.0.02026-01-21

### Community

Maintainers

![](https://www.gravatar.com/avatar/a273abe77cdd4c74270a90320efbeb4d4dfb3ceac5b4d505ce2ccafddf1e06e0?d=identicon)[gozoro](/maintainers/gozoro)

---

Top Contributors

[![gozoro](https://avatars.githubusercontent.com/u/13768280?v=4)](https://github.com/gozoro "gozoro (24 commits)")

---

Tags

calendarproductionrussianworkingworking-calendarproduction-calendarпроизводственныйкалендарьРФпроизводственный календарьпроизводственный календарь РФxmlcalendarxmlcalendar.ru

### Embed Badge

![Health badge](/badges/gozoro-russian-calendar/health.svg)

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

###  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)
