CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CalendarDate — travail calendaire au niveau de Carbon

Objectif

Une date calendaire au-dessus de DateTimeImmutable : arithmétique des mois/années avec contrôle du dépassement (addMonthsNoOverflow), bornes de périodes, isoFormat et diffForHumans en 6 langues — sans ICU/ext-intl. Les déclinaisons sont produites par cloud-castle/inflector.

À quoi ça sert et comment l’utiliser

Un remplacement de Carbon là où seules une arithmétique calendaire correcte et une sortie localisée sont nécessaires : CalendarDate::parse()/now(), puis addMonthsNoOverflow(), startOfQuarter(), diffForHumans(null, 'ru').

Exemple

$date = CalendarDate::parse('2026-01-31', 'UTC');
$date->addMonthsNoOverflow(1)->format('Y-m-d'); // 2026-02-28, not “3 March”
$date->isWeekend();                             // is it a weekend day
$date->diffInDays($other);                      // integer difference
$date->next(5)->format('Y-m-d');                // the nearest Friday
$date->subDays(5)->diffForHumans($date, 'en');  // “5 days ago”

Anti-modèles

Ne le choisissez pas uniquement pour une intégration étroite avec Laravel (façades, casts de dates Eloquent) — c’est le seul domaine où Carbon est plus riche ; l’API calendaire elle-même est à parité avec Carbon.

Cycle de vie

flowchart LR
    A[parse / now / fromClock] --> B[CalendarDate]
    B -->|addMonthsNoOverflow / startOfQuarter| B
    B -->|isWeekend / diffInDays / next| B
    B -->|isoFormat / diffForHumans| C[CloudCastle inflector]
    C --> D[Localised string]

Comparaison de la fonctionnalité avec les concurrents

Aspect🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
Arithmétique des mois sans dépassement✅❌✅❌❌❌
Bornes de périodes (startOf/endOf)✅❌✅❌❌❌
Prédicats de jour de semaine et relatifs (isWeekend/isToday)✅❌✅❌❌❌
Différences entières (diffInDays…diffInYears)✅❌✅❌❌❌
Navigation (next/previous/firstOfMonth)✅❌✅❌❌❌
diffForHumans en 6 langues✅❌✅❌❌❌
Localisation sans ICU/ext-intl✅❌❌❌❌❌
Date issue d’une horloge injectée (déterminisme)✅❌❌❌❌❌
Total🏆 806000

← Retour à la liste des fonctionnalités


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano