CloudCastle Clock

🇷🇺 Русский · 🇬🇧 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🏆 CloudCastlesymfonycarbonlcobuccibesteergebnis
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🏆 603000

← Zurück zur Funktionsliste


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