PHPackages                             phphleb/calendar-stub - 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. phphleb/calendar-stub

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

phphleb/calendar-stub
=====================

Solving the problem with calendar calculations in PHP

1.0.0(1y ago)13MITPHPPHP &gt;=7.3.0

Since Nov 24Pushed 1y ago2 watchersCompare

[ Source](https://github.com/phphleb/calendar-stub)[ Packagist](https://packagist.org/packages/phphleb/calendar-stub)[ RSS](/packages/phphleb-calendar-stub/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

php Calendar Stub
=================

[](#php-calendar-stub)

### Генерация объекта даты начала или окончания периода, заданного по названию.

[](#генерация-объекта-даты-начала-или-окончания-периода-заданного-по-названию)

Решает проблему точных календарных дат в DateTime, при которой, например, значение `(new DateTime('2017-01-31'))->modify('+1 month')->format('Y-m-d')` равно "2017-03-03" а не "2017-02-28".

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

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

```
$ composer require phphleb/calendar-stub
```

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

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

```
use Phphleb\CalendarStub\DateNameToPeriodConverter;
$converter = new DateNameToPeriodConverter();

// Получение даты за календарный месяц назад от текущего времени.
// Возможные значения периода: 'day', 'week', 'month', 'quarter', 'year', 'all'
// Период может быть кратным, например '2 months'.
// Методы getStartDate и getEndDate возвращают объект DateTime.
$date = $converter
        ->setPeriodName('month')
        ->getStartDate()
        ->format('Y-m-d H:i:s');

// Получение даты два календарных месяца назад от текущего времени.
$date = $converter
        ->setPeriodName('2 months')
        ->getStartDate()
        ->format('Y-m-d H:i:s');

// Получение даты два календарных месяца вперед от текущего времени.
$date = $converter
        ->setPeriodName('2 months')
        ->setStartDate(new DateTime())
        ->getEndDate()
        ->format('Y-m-d H:i:s');

// Получение даты два календарных месяца назад от заданного времени (28го февраля 2017).
$endPeriod = new DateTime('2017-02-28 00:00::00');
$date = $converter
        ->setPeriodName('2 months')
        ->setEndDate($endPeriod)
        ->getStartDate()
        ->format('Y-m-d H:i:s');

// При задании периода "all" ничего не рассчитывается, так как возвращается или
// start date от начала UNIX Time, так и уже установленная end date или текущее время.
$date = $converter
        ->setPeriodName('all')
        ->getEndDate()
        ->format('Y-m-d H:i:s');
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance39

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 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

Unknown

Total

1

Last Release

534d ago

### Community

Maintainers

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

---

Top Contributors

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

### Embed Badge

![Health badge](/badges/phphleb-calendar-stub/health.svg)

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

###  Alternatives

[yooper/php-text-analysis

PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

539393.0k2](/packages/yooper-php-text-analysis)[recca0120/laravel-erd

Laravel ERD automatically generates Entity-Relationship Diagrams from your Laravel models and displays them using Vuerd.

36072.0k](/packages/recca0120-laravel-erd)[emulsify-ds/emulsify-drupal

The official Drupal base theme for Emulsify that generates custom themes with Storybook development + Webpack Build

96539.1k2](/packages/emulsify-ds-emulsify-drupal)[vanderlee/php-sentence

Simple text sentence splitting and counting. Supports at least english, german and dutch, possibly more.

84555.7k6](/packages/vanderlee-php-sentence)

PHPackages © 2026

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