Skip to main content

Crate holidays_ru

Crate holidays_ru 

Source
Expand description

§holidays-ru

Библиотека для определения рабочих, выходных и праздничных дней в России.

§Основное API

Библиотека предоставляет набор pure-функций, которые по дате возвращают Resolved<DayFlags> или Resolved<bool>:

use holidays_ru::{flags, is_day_off, Resolved};
use chrono::NaiveDate;

let date = NaiveDate::from_ymd_opt(2026, 1, 9).unwrap();
let result = flags(date);

match result {
    Resolved::Fact(flags) => println!("Официально: {flags:?}"),
    Resolved::Predict(flags) => println!("Прогноз: {flags:?}"),
}

§Без внешних зависимостей (ymd API)

use holidays_ru;

let result = holidays_ru::flags_ymd(2026, 1, 9).unwrap();

if result.value().is_day_off() {
    println!("9 января 2026 — выходной день");
}

§Поддерживаемые годы

  • 1993–2026: официальные данные производственного календаря (возвращаются как Resolved::Fact).
  • 1900–2100 вне диапазона официальных данных: алгоритмический прогноз на основе ТК РФ (возвращаются как Resolved::Predict).

§Feature flags

  • chrono — поддержка [chrono::NaiveDate]
  • time — поддержка [time::Date]
  • serde — сериализация DayFlags и Resolved<T>

Без фич библиотека работает только через _ymd API.

Structs§

DayFlags
Компактное представление свойств дня через битовые флаги.

Enums§

Resolved
Результат запроса к календарю: факт или прогноз.
WorkWeek
Норма рабочей недели для расчёта рабочего времени.

Constants§

FIRST_FACT_YEAR
Первый год, для которого есть официальные данные производственного календаря.
LAST_FACT_YEAR
Последний год, для которого есть официальные данные производственного календаря.
MAX_YEAR
Максимальный год, принимаемый _ymd API.
MIN_YEAR
Минимальный год, принимаемый _ymd API.

Functions§

flags_ymd
Возвращает DayFlags для даты, заданной годом, месяцем и днём.
is_day_off_ymd
Возвращает true, если день выходной.
is_holiday_ymd
Возвращает true, если день является федеральным нерабочим праздничным днём.
is_short_day_ymd
Возвращает true, если день является сокращённым рабочим днём.
is_transferred_ymd
Возвращает true, если день затронут переносом выходного.
is_weekend_ymd
Возвращает true, если день — суббота или воскресенье.
is_working_day_ymd
Возвращает true, если день рабочий.
non_working_days_between_ymd
Считает нерабочие дни в полуоткрытом диапазоне дат [start, end).
working_hours_between_ymd
Считает рабочее время в часах в полуоткрытом диапазоне дат [start, end).
working_minutes_between_ymd
Считает рабочее время в минутах в полуоткрытом диапазоне дат [start, end).