🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
CalendarDate — aritmetica del calendario di livello Carbon
Scopo
Data di calendario sopra DateTimeImmutable: aritmetica di mesi/anni con controllo dell'overflow (addMonthsNoOverflow), limiti dei periodi, isoFormat e diffForHumans in 6 lingue — senza ICU/ext-intl. Le declinazioni sono costruite da cloud-castle/inflector.
A cosa serve e come usarlo
Sostituto di Carbon dove serve solo un'aritmetica di calendario corretta e un output localizzato: CalendarDate::parse()/now(), poi addMonthsNoOverflow(), startOfQuarter(), diffForHumans(null, 'ru').
Esempio
$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-pattern
Non sceglierlo solo per l'integrazione stretta con Laravel (facciate, cast delle date di Eloquent) — è l'unico ambito in cui Carbon è più ricco; l'API di calendario in sé è alla pari con Carbon.
Ciclo di vita
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]
Confronto della funzionalità con gli analoghi
| Aspetto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Aritmetica dei mesi senza overflow | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Limiti dei periodi (startOf/endOf) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Predicati del giorno della settimana e relativi (isWeekend/isToday) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Differenze intere (diffInDays…diffInYears) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Navigazione (next/previous/firstOfMonth) | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| diffForHumans in 6 lingue | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Localizzazione senza ICU/ext-intl | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Data da orologio iniettabile (determinismo) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Totale | 🏆 8 | 0 | 6 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano