🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TimeSpan — Dauer mit Nanosekunden-Genauigkeit
Zweck
Immutables Value Object einer Dauer: 64-Bit-Nanosekunden, exakte Arithmetik mit Überlaufkontrolle, Parsen von ISO 8601, 1h 30m und relativen PHP-Strings.
Wofür und wie zu verwenden
Timeouts, Intervalle, Konfiguration von Verzögerungen: TimeSpan::fromString('1h 30m'), ->plus(), ->compareTo(), ->toIso8601(), ->toDateInterval().
Beispiel
$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-Patterns
Kalenderjahre/-monate werden bewusst nicht akzeptiert (ihre Dauer ist mehrdeutig): TimeSpan ist eine exakte Dauer in Nanosekunden. Für die Kalenderarithmetik von Monaten/Jahren verwenden Sie CalendarDate (addMonthsNoOverflow(), addYears()).
Lebenszyklus
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()]
Funktionsvergleich mit Konkurrenten
| Aspekt | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Speicherung mit Nanosekunden-Genauigkeit | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Kontrolle des Ganzzahl-Überlaufs | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Parsen von ISO 8601 und menschenlesbaren Strings | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Immutable Arithmetik | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Verzicht auf mehrdeutige Monate/Jahre | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Menschenlesbare Ausgabe forHumans() in 6 Sprachen | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Gesamt | 🏆 6 | 0 | 3 | 0 | 0 | 0 |
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano