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

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

vsavritsky/russian-calendar
===========================

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

1.1(6y ago)048MITPHPPHP &gt;=7.0

Since Dec 15Pushed 6y agoCompare

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

READMEChangelogDependenciesVersions (4)Used By (0)

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

[](#russian-calendar)

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

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

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

```
	composer require vsavritsky/russian-calendar

```

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

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

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

$date = '2019-01-02';

print "Дата: ".$date."\n";

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

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

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

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

print "ЭТО ПРАЗДНИЧНЫЙ ДЕНЬ? ".($calendar->isHoliday($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->getWeekendDateArray($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->getWeekendDateArray($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->getHolidayDateArray($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->getHolidayDateArray($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
```

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

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

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

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

```
$calendar = new \Vsavritsky\RussianCalendar\RussianCalendar('en');
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

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 ~61 days

Total

3

Last Release

2217d ago

Major Versions

0.1 → 1.12020-04-16

PHP version history (2 changes)v0.0.2PHP &gt;=5.5.9

0.1PHP &gt;=7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/1872ace6ad18c747f549b07e197ac0405e2c92ba56449fbeebead453ed4fd69f?d=identicon)[savritsky](/maintainers/savritsky)

---

Top Contributors

[![savritsky](https://avatars.githubusercontent.com/u/5127886?v=4)](https://github.com/savritsky "savritsky (5 commits)")

---

Tags

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

### Embed Badge

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

```
[![Health](https://phpackages.com/badges/vsavritsky-russian-calendar/health.svg)](https://phpackages.com/packages/vsavritsky-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)
