🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TimeSpan — durata con precisione al nanosecondo
Scopo
Value object immutabile di durata: nanosecondi a 64 bit, aritmetica esatta con controllo dell'overflow, parsing di ISO 8601, di 1h 30m e delle stringhe relative di PHP.
A cosa serve e come usarlo
Timeout, intervalli, configurazione dei ritardi: TimeSpan::fromString('1h 30m'), ->plus(), ->compareTo(), ->toIso8601(), ->toDateInterval().
Esempio
$span = TimeSpan::fromString('1h 30m')->plus(TimeSpan::ofSeconds(15.5));
$span->seconds(); // 5415.5
$span->toIso8601(); // PT1H30M15.5S
TimeSpan::between($start, $end); // from a pair of moments
TimeSpan::fromIso8601('P2DT3H');
Anti-pattern
Gli anni/mesi di calendario vengono deliberatamente rifiutati (la loro durata è ambigua): TimeSpan è una durata esatta in nanosecondi. Per l'aritmetica di calendario di mesi/anni usa CalendarDate (addMonthsNoOverflow(), addYears()).
Ciclo di vita
flowchart TD
A[ofSeconds/ofHours/...] --> S((TimeSpan ns))
B[fromIso8601 / fromString / fromDateString] --> S
C[between / fromDateInterval] --> S
S --> D[plus/minus/multipliedBy/dividedBy]
D --> S
S --> E[seconds()/toIso8601()/toDateInterval()]
Confronto della funzionalità con gli analoghi
| Aspetto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Precisione di memorizzazione al nanosecondo | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Controllo dell'overflow intero | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Parsing di ISO 8601 e stringhe leggibili | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Aritmetica immutabile | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Rifiuto di mesi/anni ambigui | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Output leggibile forHumans() in 6 lingue | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Totale | 🏆 6 | 0 | 3 | 0 | 0 | 0 |
← Torna all'elenco delle funzionalità
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano