🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
TimeSpan — duración con precisión de nanosegundos
Propósito
Value object inmutable de duración: nanosegundos de 64 bits, aritmética exacta con control de desbordamiento, análisis de ISO 8601, 1h 30m y cadenas relativas de PHP.
Para qué y cómo usarlo
Tiempos de espera, intervalos, configuración de retrasos: TimeSpan::fromString('1h 30m'), ->plus(), ->compareTo(), ->toIso8601(), ->toDateInterval().
Ejemplo
$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');
Antipatrones
Los años/meses calendáricos se rechazan deliberadamente (su duración es ambigua): TimeSpan es una duración exacta en nanosegundos. Para la aritmética calendárica de meses/años use CalendarDate (addMonthsNoOverflow(), addYears()).
Ciclo de vida
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()]
Comparación de la característica con alternativas
| Aspecto | 🏆 CloudCastle | symfony | carbon | lcobucci | beste | ergebnis |
|---|---|---|---|---|---|---|
| Precisión de almacenamiento en nanosegundos | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Control de desbordamiento de enteros | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Análisis de ISO 8601 y cadenas legibles | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Aritmética inmutable | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Rechazo de meses/años ambiguos | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
Salida legible forHumans() en 6 idiomas | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Total | 🏆 6 | 0 | 3 | 0 | 0 | 0 |
← Volver a la lista de características
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano