ForHosting KIT · Fechas y tiempo

Duración total de intervalos de tiempo

Pegue una lista de intervalos de tiempo y obtenga el tiempo real que cubren: de 10:00 a 12:00 y de 11:00 a 13:00 UTC cubren 3 horas, no las 5 que da una suma simple. Los intervalos solapados o contiguos se fusionan antes. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto

Los equipos de operaciones, los scripts de nómina y las herramientas de SLA suelen manejar muchos intervalos de tiempo explícitos que se solapan: turnos de guardia, reservas de equipos, ventanas de indisponibilidad o sesiones facturables. Sumar cada intervalo de forma ingenua cuenta dos veces los minutos compartidos. Esta calculadora de duración total de intervalos de tiempo acepta una lista de pares inicio y fin en ISO-8601, normaliza cada límite a UTC absoluto con aritmética gregoriana pura, fusiona los intervalos que se solapan o se tocan y devuelve la longitud del tramo cubierto en milisegundos, segundos y horas, más un desglose en días, horas, minutos y segundos. Las reservas contiguas que coinciden en un extremo se convierten en un segmento continuo, de modo que un punto de contacto de longitud cero nunca infla el total.

Qué significa la duración cubierta tras fusionar solapes

La duración cubierta mide la unión de sus intervalos en la línea de tiempo absoluta, no la suma de cada longitud en bruto. Si Alice reserva de las diez a las doce y Bob de las once a las trece el mismo día UTC, la suma ingenua es cinco horas, mientras que el tramo cubierto es solo tres horas de las diez a las trece.

Este extremo implementa el algoritmo clásico de ordenar y fusionar: cada inicio y fin se convierte a milisegundos de época UTC, la lista se ordena por hora de inicio, y cada intervalo siguiente o bien amplía el segmento abierto actual cuando empieza en o antes del fin de ese segmento, o bien abre un segmento nuevo cuando hay un hueco positivo.

Los intervalos que se tocan, por ejemplo terminar a las doce y empezar a las doce, se fusionan en un bloque continuo, el modelo correcto de tiempo continuo para cobertura, ocupación y disponibilidad SLA. Se rechazan intervalos de longitud cero e invertidos porque no definen un tramo abierto positivo.

Contrato de entrada, límites ISO y forma de la respuesta

Cada objeto debe incluir los campos de cadena start y end en forma ISO-8601: año de cuatro dígitos, mes y día, opcionalmente seguidos de hora del día con horas, minutos, segundos y una parte fraccionaria opcional de segundo. Una Z final significa UTC; un desplazamiento numérico como más cero dos dos puntos cero cero o menos cero cinco dos puntos cero cero desplaza los campos locales a UTC absoluto antes de fusionar.

Los valores solo de fecha se tratan como medianoche UTC para que las ventanas de día funcionen sin inventar un reloj. Nunca se emiten campos opcionales nulos. La validación fallida no consume saldo.

Dónde ayuda sumar el tiempo cubierto

Las plataformas de personal y guardia fusionan fragmentos de turno para que la nómina y las reglas de fatiga cobren cobertura continua en lugar de horas dobles solapadas. Los sistemas de reserva de instalaciones y laboratorios calculan la ocupación de una sala o instrumento cuando las reservas se apilan, alimentando paneles de utilización sin funciones SQL de ventana en cada informe. Las páginas de fiabilidad y estado convierten muchos intervalos parciales de incidencia en una sola longitud de indisponibilidad cubierta para el cálculo mensual de SLA.

Los rastreadores de tiempo de proyecto consolidan registros de sesión duplicados de clientes móviles y de escritorio que registraron el mismo trabajo dos veces con relojes ligeramente distintos. Combine esta herramienta con la intersección de dos intervalos cuando necesite el solape de exactamente dos rangos, o con utilidades de humanización de duración cuando solo quiera texto legible a partir de un recuento de segundos.

Totales de cobertura de guardia y turnos

Fusiona ventanas de servicio solapadas de un equipo para que nómina y fatiga usen horas cubiertas en lugar de contar dos veces turnos concurrentes.

Ocupación de salas y recursos

Suma la unión de reservas de un banco de laboratorio o sala de reuniones cuando se solapan, para informes de utilización sin SQL en bruto.

Indisponibilidad SLA por incidencias parciales

Colapsa muchos intervalos de incidente en una sola duración de outage cubierta para el cálculo mensual de disponibilidad y exportaciones de estado.

¿Los minutos solapados se cuentan dos veces?

No. Los intervalos se ordenan y fusionan antes de sumar, de modo que la cobertura compartida contribuye solo una vez a la duración total cubierta.

¿Qué ocurre si dos intervalos solo se tocan en un extremo?

Se fusionan en un segmento continuo. Los límites que se tocan no crean un hueco y no añaden duración extra más allá del tramo combinado.

¿Cuántos intervalos puedo introducir?

De uno a 200 en una misma lista. Cada uno necesita un inicio y un final, y el inicio debe ser estrictamente anterior al final; los intervalos de duración cero o invertidos se rechazan.

¿Puedo escribir fechas sin hora?

Sí. Una fecha sola se interpreta como medianoche UTC, lo que facilita trabajar por días. Las horas pueden llevar Z para UTC o un desfase numérico, y todo se pasa a UTC antes de fusionar.

¿Cómo veo qué intervalos se fusionaron?

El resultado enumera cada tramo fusionado con su propio inicio, final y duración, y muestra cuántos intervalos introdujo junto a cuántos quedan tras la fusión, para que pueda revisar el total.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/date/intervals-total-duration

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/date/intervals-total-duration \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"intervals":[{"start":"2020-01-01T10:00:00Z","end":"2020-01-01T12:00:00Z"},{"start":"2020-01-01T11:00:00Z","end":"2020-01-01T13:00:00Z"}]}'
{
  "intervals": [
    {
      "start": "2020-01-01T10:00:00Z",
      "end": "2020-01-01T12:00:00Z"
    },
    {
      "start": "2020-01-01T11:00:00Z",
      "end": "2020-01-01T13:00:00Z"
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "date.intervals_total_duration",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Formas ISO inválidas, rangos invertidos y listas vacías fallan con invalid_input y no se facturan.

Qué significa la duración cubierta tras fusionar solapes

La respuesta informa input_count frente a merged_count para que vea cuánta consolidación hubo, y enumera cada segmento fusionado con su propio inicio, fin y duración para auditorías. Use total_duration_ms cuando necesite una medida entera principal; use total_duration_hours cuando los paneles esperen horas fraccionarias redondeadas a doce decimales estables; use days, hours, minutes y seconds juntos al mostrar una línea legible sin repetir la división.

Contrato de entrada, límites ISO y forma de la respuesta

Envíe un cuerpo JSON con un array intervals obligatorio de uno a doscientos objetos. Tras la normalización, start debe ser estrictamente anterior a end; límites iguales o invertidos fallan con invalid_input indicando el índice del intervalo. En caso de éxito el cuerpo incluye input_count, merged_count, total_duration_ms, total_duration_seconds, total_duration_hours, los campos de desglose no negativos days, hours, minutes, seconds y milliseconds, una cadena compacta formateada como cero d tres h cero m cero s, el array ordenado merged_intervals con extremos ISO UTC, y method con valor intervals_total_duration. Ejemplo: dos ventanas de horas solapadas de las diez a las doce y de las once a las trece UTC se fusionan en un segmento de tres horas y total_duration_ms de diez millones ochocientos mil. Mantenga la lista bajo el máximo publicado para que los Workers de borde respeten la memoria y sigan cubriendo lotes realistas.

Dónde una API de duración total de intervalos aporta valor

Como la implementación es pure parse de nivel A, cada llamada correcta cuesta el precio base publicado $0.002 sin tokens de modelo ni red de salida. Fije merged_intervals y total_duration_ms en las pruebas para que las refactors no cambien en silencio la semántica de fusión al tocar.

¿Cómo se calcula la duración total de intervalos de tiempo solapados?

Envíe JSON con intervals como array de {start, end} en ISO-8601. La API fusiona solapes en UTC y devuelve total_duration_ms, total_duration_seconds, total_duration_hours y merged_intervals.

¿Qué errores de entrada se rechazan?

Intervals vacíos o ausentes, no objetos, cadenas ISO inválidas, días de calendario imposibles y start no estrictamente anterior a end fallan con invalid_input y no se facturan.

¿Cuánto cuesta la herramienta de duración total de intervalos de tiempo?

La herramienta en el navegador es gratuita. Las solicitudes API usan saldo KIT prepago a $0.002 por llamada correcta; la entrada inválida no se factura.

Ver la documentación completa del KIT →