🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TimeSpan — durée à précision nanoseconde
Objectif
Objet-valeur de durée immuable : nanosecondes sur 64 bits, arithmétique exacte avec contrôle de dépassement, analyse d’ISO 8601, de 1h 30m et des chaînes relatives de PHP.
À quoi ça sert et comment l’utiliser
Délais d’expiration, intervalles, configuration des temporisations : TimeSpan::fromString('1h 30m'), ->plus(), ->compareTo(), ->toIso8601(), ->toDateInterval().
Exemple
$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-modèles
Les années/mois calendaires sont volontairement refusés (leur durée est ambiguë) : TimeSpan est une durée exacte en nanosecondes. Pour l’arithmétique calendaire des mois/années, utilisez CalendarDate (addMonthsNoOverflow(), addYears()).
Cycle de vie
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()]
Comparaison des fonctionnalités avec les concurrents
| Aspect | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Précision de stockage à la nanoseconde | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Contrôle du dépassement entier | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Analyse d’ISO 8601 et de chaînes lisibles | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Arithmétique immuable | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Refus des mois/années ambigus | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Sortie lisible forHumans() en 6 langues | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Total | 🏆 6 | 0 | 3 | 0 | 0 | 0 |
← Retour à la liste des fonctionnalités
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano